展会信息港展会大全

Android利用setLayoutParams在代码中调整布局(Margin和居中)
来源:互联网   发布日期:2015-10-13 15:21:24   浏览:3473次  

导读: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.RelativeLayou...

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

}

}

}

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>

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

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港