zoukankan      html  css  js  c++  java
  • Android利用setLayoutParams在代码中调整布局(Margin和居中)

    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--------
    			
    		}
    
    	}
    }
    


     

    main.xml如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://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>


     

  • 相关阅读:
    Alpha冲刺Day10
    Alpha冲刺Day9
    Alpha冲刺Day8
    Alpha冲刺Day7
    Alpha冲刺Day6
    SDN
    【Alpha
    【Alpha】团队课程展示
    【Alpha】团队项目测试报告与用户反馈
    【Alpha】总结
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3184844.html
Copyright © 2011-2022 走看看