精华内容
下载资源
问答
  • // =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT); // layoutParams.setMargins(280, 0, 0, 0); // mTextView.setLayoutParams...

    MainActivity如下:

    package cn.testfixmargin; 
    
    import android.os.Bundle; 
    import android.util.DisplayMetrics; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.RelativeLayout; 
    import android.widget.TextView; 
    import android.app.Activity; 
    /**
     * Demo描述:
     * 在代码中设置布局的属性
     * 比如Margin和居中
     * 
     * 注意事项:
     * 参见代码中的详细注释
     */ 
    public class MainActivity extends Activity { 
        private TextView mTextView; 
        private Button mButton; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 
            init(); 
        } 
        private void init(){ 
            DisplayMetrics displayMetrics = new DisplayMetrics(); 
            getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
            float density=displayMetrics.density; 
            float fontScale = displayMetrics.scaledDensity; 
            System.out.println("density="+density+",fontScale="+fontScale); 
    
            mTextView=(TextView) findViewById(R.id.textView); 
            mButton=(Button) findViewById(R.id.button); 
            mButton.setOnClickListener(new OnClickListenerImpl()); 
    
    
        } 
    
        private class OnClickListenerImpl implements OnClickListener { 
            @Override 
            public void onClick(View v) { 
    //         //--------以下为测试1 在代码中为控件设置Margin--------  
    //         //注意:  
    //         //1  此处的new RelativeLayout.LayoutParams(int w, int h)参数w,h指的是  
    //         //  该控件的父控件的在布局文件中所设置的宽和高  
    //         //2  此处必须使用RelativeLayout.LayoutParams.FILL_PARENT()  
    //         //  因为其父类为RelativeLayout所以是其父类的布局参数即RelativeLayout.LayoutParams.XXX  
    //         //  注意其官方文档的描述:  
    //         //  Set the layout parameters associated with this view.   
    //         //  These supply parameters to the parent of this view specifying how it should be arranged.  
    //         //  也就是说这个setLayoutParams()是给其父控件看的  
    //         //  其实这也好理解:只有父类可以改变子View的位置布局.而不是说子View可以随意  
    //         //  按照自己的想法摆放自己的位置,而不受父控件控制  
    //           RelativeLayout.LayoutParams layoutParams  
    //           =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);  
    //           layoutParams.setMargins(280, 0, 0, 0);  
    //           mTextView.setLayoutParams(layoutParams);  
    //           //--------以上为测试1--------  
    
    
    
                //--------以下为测试2 在代码中设置控件居中--------  
                //注意:  
                //1  此处的new RelativeLayout.LayoutParams(int w, int h)参数w,h指的是  
                //  该控件在布局文件中所设置的宽和高  
                //2  同测试1中的描述  
                RelativeLayout.LayoutParams layoutParams= 
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); 
                mTextView.setLayoutParams(layoutParams); 
                //--------以下为测试2--------  
    
            } 
    
        } 
    } 
    
    package cn.testfixmargin;
    
    import android.os.Bundle;
    import android.util.DisplayMetrics;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    import android.app.Activity;
    /**
     * Demo描述:
     * 在代码中设置布局的属性
     * 比如Margin和居中
     *
     * 注意事项:
     * 参见代码中的详细注释
     */
    public class MainActivity extends Activity {
        private TextView mTextView;
        private Button mButton;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      init();
     }
        private void init(){
      DisplayMetrics displayMetrics = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
         float density=displayMetrics.density;
         float fontScale = displayMetrics.scaledDensity;
         System.out.println("density="+density+",fontScale="+fontScale);
    
         mTextView=(TextView) findViewById(R.id.textView);
         mButton=(Button) findViewById(R.id.button);
         mButton.setOnClickListener(new OnClickListenerImpl());
    
    
        }
    
     private class OnClickListenerImpl implements OnClickListener {
      @Override
      public void onClick(View v) {
    //     //--------以下为测试1 在代码中为控件设置Margin--------
    //     //注意:
    //     //1  此处的new RelativeLayout.LayoutParams(int w, int h)参数w,h指的是
    //     //  该控件的父控件的在布局文件中所设置的宽和高
    //     //2  此处必须使用RelativeLayout.LayoutParams.FILL_PARENT()
    //     //  因为其父类为RelativeLayout所以是其父类的布局参数即RelativeLayout.LayoutParams.XXX
    //     //  注意其官方文档的描述:
    //     //  Set the layout parameters associated with this view.
    //     //  These supply parameters to the parent of this view specifying how it should be arranged.
    //     //  也就是说这个setLayoutParams()是给其父控件看的
    //     //  其实这也好理解:只有父类可以改变子View的位置布局.而不是说子View可以随意
    //     //  按照自己的想法摆放自己的位置,而不受父控件控制
    //           RelativeLayout.LayoutParams layoutParams
    //           =new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
    //           layoutParams.setMargins(280, 0, 0, 0);
    //           mTextView.setLayoutParams(layoutParams);
    //           //--------以上为测试1--------
    
    
    
                //--------以下为测试2 在代码中设置控件居中--------
       //注意:
       //1  此处的new RelativeLayout.LayoutParams(int w, int h)参数w,h指的是
       //  该控件在布局文件中所设置的宽和高
       //2  同测试1中的描述
       RelativeLayout.LayoutParams layoutParams=
          new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
       layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
       mTextView.setLayoutParams(layoutParams);
                //--------以下为测试2--------
    
      }
      }
    }

    布局文件activity_layout.xml

    <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
        xmlns:tools="https://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         > 
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world"
            android:textSize="25sp"
            android:layout_marginLeft="20dip"
        /> 
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Click"
            android:textSize="25sp"
            android:layout_centerInParent="true"
         /> 
    
    </RelativeLayout> 
    
    <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
        xmlns:tools="https://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         >
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world"
            android:textSize="25sp"
            android:layout_marginLeft="20dip"
        />
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Click"
            android:textSize="25sp"
            android:layout_centerInParent="true"
         />
    
    </RelativeLayout>
    展开全文
  • Android开发:LayoutParams的用法 LayoutParams继承于Android.View.ViewGroup.LayoutParams. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领...

    Android开发:LayoutParams的用法

    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));
    
    这表示这个子控件的父布局是一个TableRow , 这样的LayoutParams 太多,所以应明确指明。
     
    下面分别说下两个常用到布局:
    1 . FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现:这表示这个子控件的父布局是一个TableRow , 这样的LayoutParams 太多,所以应明确指明。
    下面分别说下两个常用到布局:
    1 . FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现:

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

    这表示这个子控件的父布局是一个TableRow , 这样的LayoutParams 太多,所以应明确指明。
     
    下面分别说下两个常用到布局:
    1 . FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现:这表示这个子控件的父布局是一个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);


    展开全文
  • 1.LinearLayout.LayoutParams使用说明 2.在Java代码中利用LinearLayout.LayoutParams构建布局
  • 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);
    




    展开全文
  • AndroidLayoutParams类精炼详解

    千次阅读 2018-06-02 11:50:29
    1、《Android开发艺术探索》第8章,Java代码中动态设置按钮时 通过LayoutParams参数设置按钮位置x、y参数 及Gravity位置信息,从而动态的添加进一个随手势移动的按钮,类似于悬浮窗效果。 public void ...

    一、前期基础知识储备

    首先看几个使用LayoutParams的实例:

    1、《Android开发艺术探索》第8章,Java代码中动态设置按钮时 通过LayoutParams参数设置按钮位置x、y参数 及Gravity位置信息,从而动态的添加进一个随手势移动的按钮,类似于悬浮窗效果。

        public void onButtonClick(View view) {
            if (view == btnTest1) {
                btnTest = new Button(this);
                btnTest.setText("滑动按钮");
    			
                layoutParams = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.WRAP_CONTENT,
                        WindowManager.LayoutParams.WRAP_CONTENT,
                        0, 0,//0,0 分别是type和flags参数,在后面分别配置了
                        PixelFormat.TRANSPARENT);
                layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
                //申明以下type时 需要申请权限android.permission.SYSTEM_ALERT_WINDOW
                layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
    			
                layoutParams.gravity = Gravity.LEFT | Gravity.TOP;
                layoutParams.x = 100;
                layoutParams.y = 300;
                windowManager.addView(btnTest2, layoutParams);
                btnTest.setOnTouchListener(this);
            }
        }

    2、《Android开发艺术探索》第3章,通过设置LayoutParams参数实现控件的滑动。

    	MarginLayoutParams params = (MarginLayoutParams) mButton.getLayoutParams();
    	params += 100;
    	params.leftParams += 100; //实现按钮控件往左滑动100px
    	mButton.requestLayout();
    	//mButton.setLayoutParams(params);
            mPrimeViewPager = (ViewPager) view.findViewById(R.id.prime_viewPager);
            LinearLayout.LayoutParams viewPager_lp = (LinearLayout.LayoutParams)mPrimeViewPager.getLayoutParams();
            viewPager_lp.width = (int) (ScreenUtils.getScreenWidth() * 0.57);
            viewPager_lp.height = viewPager_lp.width * 16 / 9;
            mPrimeViewPager.setLayoutParams(viewPager_lp);

    注意:LayoutParams,每个view都需要一个LayoutParams,告诉父容器的一些放入规则和方式,这时候该view的LayoutParams要与父容器的LayoutParam相互对应,比如该view的父容器使用的LinearLayout.LayoutParam,该view的布局类型也要对应着LinearLayout.LayoutParam,不然的话回报类型转换错误.。或者也可以直接使用ViewGroup.MarginLayoutParams。

    3、在笔者之前的文章《横向滑动视图HorizontalScrollView精炼详解》 有以下代码,为HorizontalScrollView中动态添加TextView,进行数据填充。

    	private void bindHZSWData()  { 
            //为布局中textview设置好相关属性  
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,   
            ViewGroup.LayoutParams.WRAP_CONTENT);  
            lp.gravity = Gravity.CENTER;  
            lp.setMargins(20, 10, 20, 10);  
      
            for (int i = 0; i < data.size(); i++)  {
                TextView textView = new TextView(this);  
                textView.setText(data.get(i));  
                textView.setTextColor(Color.WHITE);
    			
                textView.setLayoutParams(lp);  
                container.addView(textView);
    			
                container.invalidate();    
            }  
        } 

    4、实际开发中,笔者碰到自定义View时重写onMeasure()后改变View的布局时,view位置也要进行相应调整,所以写了一个方法,里面通过LayoutParams.Gravity= Gravity.CENTER,控制该view的位置为居中。

        public void setParams() {
            FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
            lp.gravity = Gravity.CENTER;
            this.setLayoutParams(lp);
            this.invalidate();
        }

    以上的例子都是利用LayoutParams类实现新view的添加或者已有view位置的调整。我们来看一下官方文档中对于这个类的描述。打开Android开发者文档,键入LayoutParams时会发现出来很多个和LayoutParams相关的类。本篇文章中,我们只关注ViewGroup.LayoutParams中的LayoutParams类。

    public static class ViewGroup.LayoutParamsextends Object.可以看到ViewGroup.LayoutParams是一个静态的直接继承自Object的类,那么可以判断其为基类,文档往下看,我们看到:

    果然,所有的LayoutParams类都是继承自ViewGroup.LayoutParams。其实ViewGroup.LayoutParams很好理解,这个类里面的成员变量最主要包括两个——width和height,对应在XML布局中的android:layout_height和android:layout_width,也就是所有的View控件都需要写入的两个属性。接着,笔者在截图中标注了四个具体的LayoutParams子类,这四个类在开发中是用到最多的。

    二、上代码,具体使用LayoutParams类

    (1)使用LayoutParams类动态创建新的布局元素

    ①定义一个XML布局,根布局为线性布局,布局中不放入任何控件;

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/root_ll"
        tools:context="com.example.administrator.myviewtest.MainActivity">
    	
        </LinearLayout>

    ②在Activity代码中动态的为整个布局增加一个TextView,要求对其属性进行设置;

    private LinearLayout mLinearLayout;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLinearLayout = (LinearLayout) findViewById(R.id.root_ll);
    
        //设置TextView的width和height 对应XML布局中的android:layout_width和android:layout_height属性
        //这里的ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT是作为构造方法的参数传入的
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        //设置TextView的gravity 对应于XML布局中layout_gravity
        lp.gravity = Gravity.CENTER_HORIZONTAL;
        //设置TextView的Margin属性,包括left、top、right、botom
        lp.setMargins(20,20,20,20);
        //新建TextView实例
        TextView textView = new TextView(this);
        textView.setText("Android cool");
        //为textView实例绑定创建好的LayoutParams
        textView.setLayoutParams(lp);
        //调用LinearLayout的addView方法 动态的
        mLinearLayout.addView(textView);
    }

    这里,我们以LinearLayout的LayoutParams实例为例,进行创建。

    (2)使用LayoutParams类动态改变已有的布局元素的位置信息

    ①定义一个XML布局,根布局为线性布局,布局中加入一个基础的文本控件;

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/root_ll"
        tools:context="com.example.administrator.myviewtest.MainActivity">
    	
        <--注意这里TextView是放在LinearLayout中的 所以待会取Params时使用的是LinearLayout的 -->
        <TextView
            android:id="@+id/textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    		
        </LinearLayout>

     

    ②在Activity中利用LayoutParams类动态的改变基础文本控件的位置信息;

    private LinearLayout mLinearLayout;
    private TextView mTextView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLinearLayout = (LinearLayout) findViewById(R.id.root_ll);
        mTextView = (TextView) findViewById(R.id.textview);
        //传入已有控件的LayoutParams信息作为LinearLayout.LayoutParams构造方法的参数
        //注意TextView的父容器是LinearLayout,所以使用的是LinearLayout.LayoutParams
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(mTextView.getLayoutParams());
        //设置已有文本控件位置为横向居中
        lp.gravity = Gravity.CENTER_HORIZONTAL;
        //设置已有文本空间的Margin
        lp.setMargins(60,60,60,60);
    
        mTextView.setText("nice Android");
        //将创建好的LayoutParams绑定到已有文本控件
        mTextView.setLayoutParams(lp);
    }

     

    可以看到,这里使用LayoutParams的方法是一样的,只是在创建LayoutParams实例的时候传入构造方法的参数不一样了,在已有控件的前提下,我们传入的是已有空间的LayoutParams信息。

    (3)LayoutParams类的构造方法

    我们可以看见ViewGroup.LayoutParams的构造方法有三个(子类会多一个),我们在动态创建新View的时候,调用的是LayoutParams第二个构造方法,传入wrap_content或者match_parent常量或者固定值即可;在动态调整已有控件的位置信息时,我们调用的是LayoutParams的第三个构造方法,传入的参数是已有控件的LayoutParams的信息,利用view. getLayoutParams()即可获得。

     

    总结:使用LayoutParams的最常见的两种场景就是文章中提到的两种:①动态创建新控件元素;②调整已有布局元素的位置信息,更难一点的用法出现在自定义View中,我们重写onMeasure()方法之后,通常需要对自定义view的位置进行新的调整,在这个过程中,我们不是通过onLayout()方法实现的(onLayout用于实现ViewGroup对其内部view重新布局时调用),而是使用设置自定义View的LayoutParams.gravity实现的,自定义View也是一个view,这里可以将这种LayoutParams的用法归为第二种-对已有控件的位置进行调整。

    本文代码中是使用的LinearLayout.LayoutParams,实际开发中还可能使用到其他类型的LayoutParams,如开篇中,讲到的《Android开发艺术探索》中使用的就是WindowManager.LayoutParamsViewGroup.MarginLayoutParams,用法是类似的,但是各自可以设置的属性是不同的,比如,WindowManager.LayoutParams可以直接设置view的横纵坐标信息,直接控制view在屏幕中的显示位置;ViewGroup.MarginLayoutParams可以很方便的设置view各边的margin属性,可以用来实现滑动效果。感兴趣的读者可以到开发者文档中进行了解。

     

    展开全文
  • 有这样的一个应用场景:有一个linearLayout控件在其中布局一个textView控件 首先,创建线性布局对象 ...//并且设置它的属性 android:layout_width 与 android:layout_height 都为 FILL_PARENT //布局方
  • AndroidLayoutParams的用法

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

    千次阅读 2018-05-30 17:27:23
    PopupWindow pw = new PopupWindow(menuView, ViewGroup.LayoutParams.MATCH_PARENT,  ViewGroup.LayoutParams.WRAP_CONTENT, true);  pw.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));  pw....
  • 因为数据是动态的 所以所有的控件和布局都是在java代码里面设置 ...怎样才能让一个控件垂直居中 还有两个控件之间的距离又是怎么设置的啊 求高手指点啊 最好能给点代码 我是新手 说的太笼统了 看不太懂 谢谢了
  • Android 代码设置RelativeLayout元素居中

    万次阅读 2015-07-02 17:02:18
    RelativeLayout relativeLayout= new RelativeLayout(this);...RelativeLayout.LayoutParams rlp=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_C
  • FrameLayout下动态设置子控件居中,动态用JAVA代码要这样实现: FrameLayout.LayoutParams lytp = new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT); lytp .gravity = Gravity.CENTER; btn....
  • 原文链接:... LayoutParams继承于Android.View.ViewGroup.LayoutParams.  LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layo
  • android:layout_gravity=”center”是对textview控件在整个布局中居中,也可以在其父layout中调用设置android:gravity=”center” 程序中也是需要设置其所在控件的父layout,例如: RelativeLayout.LayoutParams ...
  • Android LayoutParams的用法    最近为各个布局下的水平垂直居中搞烦了。因为是动态构建的布局,一些在XML里面很好写的居中,动态JAVA代码里不知道么样实现,今天终于再了解了其中的意思。   ...
  • Android FrameLayout 布局文件静态设置里面的控件时是默认左上角叠加的。 &lt;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent&...
  • 本文借鉴优秀文章:... Android开发:LayoutParams的用法 LayoutParams继承于Android.View.ViewGroup.LayoutParams.  LayoutParams相当于一个Layout的信息包,它封装了Layo
  • 原文:http://tryenough.com/android-layoutparams LayoutParams是什么? LayoutParams是View用来告诉它的父控件如何放置自己的,LayoutParams是ViewGroup类里的一个静态内部类。 ViewGroup.LayoutParams仅仅描述...
  • Android布局居中的几种做法

    万次阅读 2016-09-19 13:58:09
    Android的布局文件中,如果想让一个组件(布局或View)居中显示在另一个布局(组件)中,有几种做法
  • Android布局之FrameLayout设置控件居中显示: https://blog.csdn.net/lzm1340458776/article/details/25540087
  • AndroidLayoutParams

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

    千次阅读 2018-10-14 16:22:06
     LayoutParams继承于Android.View.ViewGroup.LayoutParams,相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好...
  • //居中显示,第一个参数的控件只要是这个popwindow里面的随便一个控件就行 pop.showAtLocation(iv_cancel, Gravity.CENTER, 0, 0); //根据控件定点显示,后面的两个参数是偏移量 // pop.showAsDropDown(iv_...
  • LayoutParams设置无效可能的原因

    千次阅读 2017-11-23 10:56:25
    一控件是不是还设置了权重比例android:layout_weight属性。 weight属性的优先级要高于LayoutParams设定的值。简单来说就是你不能“又要让马儿跑,又不让马儿吃草”,既然定死了所占比例,当然就无法同时设置其它的...
  • 在使用HorizontalScrollView我们常常需要让点击的view自动居中,可以用smoothScrollTo(x,y)或者scrollTo(x,y)来实现 这两个方法效果是一样的,只不过smoothScrollTo(x,y)是平滑移动,scrollTo(x,y)是直接跳过去 ...
  • android title 居中

    2015-12-23 14:38:50
    如果没有返回键和menu的话,这样是能居中滴。如果actionbar上需要显示menu的话,再给上面代码的textview 添加padding即可 来源于 Center Align title in action bar using styles in android.
  • LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,512
精华内容 2,204
热门标签
关键字:

androidlayoutparams居中