`
v5browser
  • 浏览: 1140846 次
社区版块
存档分类
最新评论

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>


分享到:
评论

相关推荐

    代码动态设置view或布局的宽高

    这就不能用XML文件写成固定值,而需要在java代码中动态设置。 网上有一些教程使用relativeView.setLayoutParams(new RelativeLayout.LayoutParams(100,200));的方法,可是发现这样设置很容易抛错; 因此有人指出不能...

    Android图片滑动切换代码实例下载.rar

    Android图片滑动切换代码实例下载,安卓图片切换效果的例子源码,把图片分装成键-值对的形式封装到容器里,获得R.layout.main中的组件元素, ImageSwitcher更换的动画效果,ImageSwitcher会显示makeView()方法返回的...

    Android帮助文档及一些资料打包放送

    [Android1_6]继承BaseAdapter为GridView设置数据时设置setLayoutParams时注意 - 农民伯伯 - 博客园.mht349.26 KB [Android]ListView性能优化之视图缓存 - 农民伯伯 - 博客园.mht513.31 KB [Android]ListView性能优化...

    android顶部滑动导航

    Fragment布局 &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F0EFF5" &gt; ...

    android实现手机触屏版的左右图片滚动.rar

    android实现手机触屏版的左右图片滚动,手指在屏幕上滑动,即可控制图片左右滑动(滚动),这各效果在android手机上已经相当常见了,制作方法并不复杂:  ImageView iv = new ImageView(Sample3_8_Activity.this);/...

    神奇的listView实现自动显示隐藏布局Android代码

    借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果。 1.自动显示隐藏Toolbar 首先给listView...

    android点餐系统 部分功能源代码

    showImg.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); showImg.setImageResource(Indent.this.imgids[img]); // 设置显示图片 Dialog dialog = new ...

    自己平时做的android相关的总结

    android 中调用drawBitmap时理解dip(屏幕密度)和px(像素)的区别 SQLiteDatabase 的setTransactionSuccessful作用 终于弄明白 paddingleft margineleft layout_gravity 和gravity之间的区别 自定义控件时要注意的...

    Android 柱状图

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main... zxView.setLayoutParams(pm); layout.addView(zxView); }

    Android 仿蘑菇街列表弹出和瀑布流ScrollView+RelativeLayout实现

    之前看到用线性布局写的瀑布流,觉得不大好,自己想了另外一种方案, (最近发现用 网页实现瀑布流 再用WebView加载才能完美实现效果) 原理使用RelativeLayout任意定位位置 核心方法 private void ...

    Android代码-安卓新手引导图引导蒙层

    提示部分支持图片和文字提示 先看效果图 使用步骤。 使用起来特别简单,只需要把GuideView这个类复制到你的项目中就可以了 *使用图片 ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.img_...

    android 的类似于QQ分组的二级列表

    * @see android.app.ExpandableListActivity#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo) */ @Override public void onCreateContextMenu...

    谷歌开源的Android排版库 FlexboxLayout.zip

    FlexboxLayout 是 Android 上实现了类似 CSS Flexible Box Layout Module 效果的界面排版。示例代码:FlexboxLayout flexboxLayout = (FlexboxLayout) findViewById(R.id.flexbox_layout); flexboxLayout....

    Android设置桌面壁纸及恢复默认墙纸.rar

    Android设置桌面壁纸及恢复默认墙纸,程序中将创建一个存储壁纸图片资源的id数组,定义被选中的图片在id数组中的索引,需要自定义一个BaseAdapter,然后:  ImageView iv = new ImageView(Sample_12_2.this);//新建...

    Android 代码写控件代替XML简单实例

    Android 代码写控件代替XML简单实例 简单的一个Button控件的练习。 实现代码: Button btn = new Button(HandlerToActivity.this); LinearLayout.LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT...

    GoogleNavigationDrawerMenu-侧滑menu菜单.zip

    在xml中创建菜单实例及内容页 xmlns:android=...

    YCRedDotView-自定义红点控件,不用修改之前的代码,完全解耦,即可以设置红点数字控件,使用十分方便。可以支持设置在TextView,Button,LinearLayout,RelativeLayout,TabLayout等等控件上…….zip

    有些红点View,需要你在布局中设置,要是很多地方有设置红点操作,则比较麻烦。而该案例不需要改变你之前的任何代码,只是需要按照步骤即可设置红点。设置红点view到你的控件的逻辑操作代码如下所示。如果控件父布局...

    Android 即时添加textview、imageview内容项.rar

    Android 即时添加textview、imageview内容项,适时动态添加这两个组件,实现时首先创建了所有资源图片(andy、bill、edgar、torvalds、turing)id的数组和所有资源字符串(andy、bill、edgar、torvalds、turing)id...

    Android ListView自动显示隐藏布局的实现方法

    借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果。 1.自动显示隐藏Toolbar 首先给listView...

    Android TouchActivity触屏触摸动态测试

    触屏触摸活动测试代码,声明ImageView变量,声明相关变量作为存储图片宽高,位置使用,声明存储屏幕的分辨率变量,取得屏幕对象,取得屏幕解析像素,通过findViewById构造器创建ImageView对象,将图片从Drawable赋值给...

Global site tag (gtag.js) - Google Analytics