精华内容
下载资源
问答
  • LayoutParams

    2016-02-20 20:58:08
    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) text.getLayoutParams(); lp.setMargins(1, 1, 10, 1);...//居中设置 (RelativeLayout) RelativeLayout.LayoutParams lp2 = new RelativeLayout.Layou
    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) text.getLayoutParams();
    
    lp.setMargins(1, 1, 10, 1);


    //居中设置 (RelativeLayout)
    RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(24, 24);
    lp2.addRule(RelativeLayout.CENTER_IN_PARENT);


    setGravity(Gravity.CENTER);
    展开全文
  • Layoutparams理解

    2017-02-08 19:14:00
    layoutparams是什么LayoutParams继承于Android.View.ViewGroup.LayoutParamsLayoutParams只是ViewGroup的一个内部类 view中的layoutparams属性是父控件的layoutparamslayoutparams能约束view的宽高和位置ViewGroup...

    一. layoutparams是什么

    LayoutParams继承于Android.View.ViewGroup.LayoutParams

    LayoutParams只是ViewGroup的一个内部类

    view中的layoutparams属性是父控件的layoutparams
    layoutparams能约束view的宽高和位置

    ViewGroup里边的LayoutParams类是 base class 基类,每个不同的ViewGroup都有自己的LayoutParams子类,

    而且不同,比如LinearLayout 也有自己的 LayoutParams
    view会用到layoutparams的属性,在不同的viewgroup里属性不同,所以获取layoutparams时要注意

    二.layoutparams有什么用

     其实这个LayoutParams类是用于child view(子视图) 向 parent view(父视图)传达自己的意愿的一个东西(孩子想变成什么样向其父亲说明)

     现在动态的在页面上加载控件,先获取父控件例如linearlayout linear,在创建一个layoutparams params 然后 再linear.addview(view,params);

    三. layoutparams怎么用
    viewgroup.layoutparams 或者直接new layoutparams

    构造方法
    LayoutParams(Context c, AttributeSet attrs)
    LayoutParams(int width, int height)
    LayoutParams(int width, int height, float weight)
    LayoutParams(ViewGroup.LayoutParams p)
    LayoutParams(ViewGroup.MarginLayoutParams source)
    LayoutParams(LayoutParams source)

      根据父控件用:
      1.如果父控件是linearlayout 那就要 linearlayout.layoutparams params = new linearlayout.layoutparams();

     

    我在这里看了一篇别人博客对于LayoutParams 的解释,我觉的很到位,所以就继续拿来主义。

    其实这个LayoutParams类是用于child view(子视图) 向 parent view(父视图)传达自己的意愿的一个东西(孩子想变成什么样向其父亲说明)其实子视图父视图可以简单理解成
    一个LinearLayout 和 这个LinearLayout里边一个 TextView 的关系 TextView 就算LinearLayout的子视图 child view 。

    需要注意的是LayoutParams只是ViewGroup的一个内部类这里边这个也就是ViewGroup里边这个LayoutParams类是 base class 基类实际上每个不同的ViewGroup都有自己的LayoutParams子类
    比如LinearLayout 也有自己的 LayoutParams 大家打开源码看几眼就知道了
    myeclipse 怎么查看源码 请看http://byandby.iteye.com/blog/814277
    下边来个例子


    Java代码 :
    1.    
        //创建一个线性布局   
             private LinearLayout mLayout;      
             mLayout = (LinearLayout) findViewById(R.id.layout);      
            //现在我要往mLayout里边添加一个TextView    
           //你可能会想直接在布局文件里边配置不就O 了 那是 但是这里为了说明问题我们用代码实现   
            TextView textView = new TextView(Activity01.this);      
                 textView.setText("Text View " );   
                 //这里请不要困惑这里是设置 这个textView的布局 FILL_PARENT WRAP_CONTENT 和在xml文件里边设置是一样的如   
          
      //在xml里边怎么配置高宽大家都会的。   
        //第一个参数为宽的设置,第二个参数为高的设置。   
                 LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(      
                         LinearLayout.LayoutParams.FILL_PARENT,      
                         LinearLayout.LayoutParams.WRAP_CONTENT      
                 );      
                 //调用addView()方法增加一个TextView到线性布局中   
                 mLayout.addView(textView, p);      
                //比较简单的一个例子  

      再举个栗子:

    2. //第一个参数为宽的设置,第二个参数为高的设置。  (用的时候注意修改LinearLayout前缀,其实很多时候可以不写它的)  
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(       
      LinearLayout.LayoutParams.FILL_PARENT,       
      LinearLayout.LayoutParams.WRAP_CONTENT       
      );   
        
        
        
        
      //设置居中显示:  
      lp.gravity = Gravity.CENTER;  
      //设置它的上下左右的margin:4个参数按顺序分别是左上右下  
      lp.setMargins(10,10,10,10);  
        
      //还可以这样添加规则:  
      lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);   
      lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);   
        
      //给某个View设置LayoutParams参数:  
      btn1.setLayoutParams(lp);  
        
      //最后将添加View到Layout中:(如果是在某个自定义的Layout布局中,前缀也可以省略)  
      mLayout.addView(textView, lp);   
      //其实不用LayoutParams也不会死啦  
      mLayout.addView(textView, tvWidth, tvHeight);

       

      如果还不能理解下边在来一段直白的说明:

    LayoutParams继承于Android.View.ViewGroup.LayoutParams.
    LayoutParams相当于一个Layout的信息包(一个约束),它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。
    可以这样去形容LayoutParams,在象棋的棋盘上(一个布局例如linearlayout),每个棋子都有自己的大小和位置的信息,如这个棋子,是20dp大小,在2行3列,这里的20dp和2行3列就是棋子的LayoutParams。
    但LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
    1,一个确定的值;
    2,FILL_PARENT,即填满(和父容器一样大小);
    3,WRAP_CONTENT,即包裹住组件就好。

     

    转载于:https://www.cnblogs.com/AllenCVI/p/6379573.html

    展开全文
  • LayoutParams使用

    2016-05-21 17:17:00
    LayoutParams继承于Android.View.ViewGroup.LayoutParams. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个...

    LayoutParams继承于Android.View.ViewGroup.LayoutParams.
           LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。
           可以这样去形容LayoutParams,在象棋的棋盘上,每个棋子都占据一个位置,也就是每个棋子都有一个位置的信息,如这个棋子在4行4列,这里的“4行4列”就是棋子的LayoutParams。

           但LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
           1,一个确定的值;
           2,FILL_PARENT,即填满(和父容器一样大小);
           3,WRAP_CONTENT,即包裹住组件就好。

    在JAVA中动态构建的布局,常常这样写:

    setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    上面这一句话其实是子对父的,也就是说,父布局下的子控件要设置这句话。

    因为布局很多,虽然都继承至ViewGroup但是各个布局还是有很大的不同。

    很显然上面这句应该这样写才算准确:

    setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,TableRow.LayoutParams.FILL_PARENT));

    这表示这个子控件的父布局是一个TableRow , 这样的LayoutParams 太多,所以应明确指明。

     

    下面分别说下两个常用到布局:

    1. FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现:

    FrameLayout.LayoutParams lytp = new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT);
    lytp .gravity = Gravity.CENTER;
    btn.setLayoutParams(lytp);

    2. RelativeLayout下动态设置子控件居中:

    RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
    btn1.setLayoutParams(lp);

     

    转载于:https://www.cnblogs.com/qianyukun/p/5515164.html

    展开全文
  • Android LayoutParams

    2019-06-20 22:51:52
    package com.example.layoutparams; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import andro...
    package com.example.layoutparams;
    
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // 1、在没有设置LayoutParams时,默认给予控件layout_width="match_parent",layout_height="wrap_content"
            // 2、new LayoutParams(width, height)设置的是控件相对于ViewGroup的宽高
            // 3、LayoutParams的属性是设置控件相对于ViewGroup所在的位置
    
            LinearLayout linearLayout = new LinearLayout(this);
            linearLayout.setOrientation(LinearLayout.VERTICAL);
    
            Button button1 = new Button(this);
            Button button2 = new Button(this);
            Button button3 = new Button(this);
            Button button4 = new Button(this);
            button1.setText("添加按钮");
            button2.setText("布局居中");
            button3.setText("圆点居中");
            button4.setText("修改按钮");
            LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            btnParams.weight = 1;
            btnParams.leftMargin = 20;
            btnParams.rightMargin = 20;
    
            LinearLayout btnLayout = new LinearLayout(this); // 默认就是width=match_parent,height=wrap_content
            btnLayout.addView(button1, btnParams);
            btnLayout.addView(button2, btnParams);
            btnLayout.addView(button3, btnParams);
            btnLayout.addView(button4, btnParams);
            linearLayout.addView(btnLayout);
    
            // 用来演示的布局和布局
            final LinearLayout showLayout = new LinearLayout(this);
            LinearLayout.LayoutParams showParams = new LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            final Button showButton = new Button(this);
    
            linearLayout.addView(showLayout, showParams);
    
            setContentView(linearLayout);
    
            /**
             *  xml文件中的代码转化为代码:
             *  <LinearLayout
             *      android:layout_width="match_parent"
             *      android:layout_height="match_parent"
             *      android:orientation="vertical">
             *
             *      <Button
             *          android:layout_width="wrap_content"
             *          android:layout_height="wrap_content"
             *          android:text="动态添加的按钮1"
             *          android:layout_gravity="center"/>
             *
             *  </LinearLayout>
             */
            // 添加一个按钮
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showLayout.removeAllViews();
                    showLayout.setGravity(Gravity.NO_GRAVITY); // 其他按钮设置后removeAllViews()只移除了View,没有移除属性
    
                    showButton.setText("动态添加的按钮1");
                    LinearLayout.LayoutParams showParams = new LinearLayout.LayoutParams(
                            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                    showLayout.addView(showButton, showParams);
                    // 和showLayout.addView(showButton, showParams)效果相同
    //                showButton.setLayoutParams(showParams);
    //                showLayout.addView(showButton);
                }
            });
    
            /**
             *  xml文件中的代码转化为代码:
             *  <LinearLayout
             *      android:layout_width="match_parent"
             *      android:layout_height="match_parent"
             *      android:orientation="vertical"
             *      android:gravity="center">
             *
             *      <Button
             *          android:layout_width="wrap_content"
             *          android:layout_height="wrap_content"
             *          android:text="动态添加的按钮2"/>
             *
             *  </LinearLayout>
             */
            // 添加一个按钮居中
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showLayout.removeAllViews();
    
                    showButton.setText("动态添加的按钮2");
                    LinearLayout.LayoutParams showParams = new LinearLayout.LayoutParams(
                            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    //                showParams.gravity = Gravity.CENTER; // 与showLayout.setGravity(Gravity.CENTER)效果相同
                    showLayout.setGravity(Gravity.CENTER);
                    showLayout.addView(showButton, showParams);
                }
            });
    
            /**
             *  xml文件中的代码转化为代码:
             *  <LinearLayout
             *      android:layout_width="match_parent"
             *      android:layout_height="match_parent"
             *      android:orientation="vertical"
             *      android:gravity="center">
             *
             *      <ImageView
             *          android:layout_width="wrap_content"
             *          android:layout_height="wrap_content"
             *          android:margin_left="20dp"
             *          android:margin_right="20dp"
             *          android:background="@drawable/shape_round_bg"/>
             *
             *      <ImageView
             *          android:layout_width="wrap_content"
             *          android:layout_height="wrap_content"
             *          android:margin_left="20dp"
             *          android:margin_right="20dp"
             *          android:background="@drawable/shape_round_bg"/>
             *
             *       <ImageView
             *          android:layout_width="wrap_content"
             *          android:layout_height="wrap_content"
             *          android:margin_left="20dp"
             *          android:margin_right="20dp"
             *          android:background="@drawable/shape_round_bg"/>
             *
             *  </LinearLayout>
             */
            // 添加三个圆点居中
            button3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showLayout.removeAllViews();
    
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                    for (int i = 0; i < 3; i++) {
                        ImageView imageView = new ImageView(MainActivity.this);
                        params.leftMargin = 20;
                        params.rightMargin = 20;
                        params.width = 50;
                        params.height = 50;
                        imageView.setImageDrawable(ContextCompat.getDrawable(MainActivity.this, R.drawable.shape_round_bg));
                        showLayout.setGravity(Gravity.CENTER);
                        showLayout.addView(imageView, params);
                    }
                }
            });
    
            // 修改按钮大小
            button4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    showLayout.removeAllViews();
    
                    LinearLayout.LayoutParams showParams = (LinearLayout.LayoutParams) showButton.getLayoutParams();
                    if (showParams == null) {
                        Toast.makeText(MainActivity.this, "button layout params is null", Toast.LENGTH_SHORT).show();
                        showParams = new LinearLayout.LayoutParams(
                                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                    }
                    showParams.width = 50;
                    showParams.height = 50;
                    showLayout.addView(showButton, showParams);
                }
            });
        }
    }
    
    展开全文
  • android LayoutParams

    2014-04-30 10:09:34
    LayoutParams继承于Android.View.ViewGroup.LayoutParams.  LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个...
  • LayoutParams用法

    2015-05-10 22:50:21
    RelativeLayout rl = new RelativeLayout(this); Button btn1 = new Button(this); btn1.setText(“———————-“);... RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams (ViewGrou
  • LayoutParams的详解

    千次阅读 2018-10-14 16:22:06
    LayoutParams的理解与应用:  LayoutParams继承于Android.View.ViewGroup.LayoutParams,相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个...
  • layoutParams的用法

    2016-08-10 00:53:00
    沙翁 向昨天要经验;...LayoutParams继承于Android.View.ViewGroup.LayoutParams.  LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout
  • LayoutParams的用法

    2016-10-11 23:55:16
    LayoutParams继承于Android.View.ViewGroup.LayoutParams   LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个...
  • LayoutParams原理

    2016-08-18 11:13:37
    在上一篇文章里,我总结了一下自定义控件需要了解的基础知识:...其中,在View的测量流程里,View的测量宽高是由父控件的MeasureSpec和View自身的LayoutParams共同决定的。MeasureSpec是什么,上一篇文章里已经说
  • 安卓LayoutParams讲解

    2015-01-21 18:11:12
    转自:... LayoutParams继承于Android.View.ViewGroup.LayoutParams.  LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,
  • 安卓LayoutParams用法

    2014-09-12 15:50:14
    LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。  假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,  最好告诉Layout用户期望的布局方式,也就是将...
  • LayoutParams是ViewGroup的一个内部类,声明方式如下 public static class LayoutParams { public static final int MATCH_PARENT = -1; public static final int WRAP_CONTENT = -2; public int width; ...
  • Android 之 LayoutParams

    2017-12-21 10:15:36
    LayoutParams 是用 Java 代码来实现动态布局,它是 子控件 告诉 父控件 自己要如何布局时用的。 LayoutParams 类简单的描述了位置,宽和高,它们可以设置成下面的这三种值: 1. 一个确定的值; 2. MAT
  • android中LayoutParams

    2016-06-16 21:36:26
    LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可...
  • 1.LinearLayout.LayoutParams使用说明 2.在Java代码中利用LinearLayout.LayoutParams构建布局
  • LayoutParams是什么? LayoutParams是View用来告诉它的父控件如何放置自己的,LayoutParams是ViewGroup类里的一个静态内部类。 ViewGroup.LayoutParams仅仅描述了这个View想要的宽度和高度。可以理解成...
  • Android 之LayoutParams

    2014-07-17 10:41:03
    [b]LayoutParams继承于Android.View.ViewGroup.LayoutParams.[/b] LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到...
  • Android LayoutParams的用法    最近为各个布局下的水平垂直居中搞烦了。因为是动态构建的布局,一些在XML里面很好写的居中,动态JAVA代码里不知道么样实现,今天终于再了解了其中的意思。   ...
  • Android之LayoutParams的用法

    千次阅读 2016-07-09 17:52:06
    LayoutParams继承于Android.View.ViewGroup.LayoutParams.  LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,887
精华内容 2,354
关键字:

layoutparams居中