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>
分享到:
相关推荐
这就不能用XML文件写成固定值,而需要在java代码中动态设置。 网上有一些教程使用relativeView.setLayoutParams(new RelativeLayout.LayoutParams(100,200));的方法,可是发现这样设置很容易抛错; 因此有人指出不能...
Android图片滑动切换代码实例下载,安卓图片切换效果的例子源码,把图片分装成键-值对的形式封装到容器里,获得R.layout.main中的组件元素, ImageSwitcher更换的动画效果,ImageSwitcher会显示makeView()方法返回的...
[Android1_6]继承BaseAdapter为GridView设置数据时设置setLayoutParams时注意 - 农民伯伯 - 博客园.mht349.26 KB [Android]ListView性能优化之视图缓存 - 农民伯伯 - 博客园.mht513.31 KB [Android]ListView性能优化...
Fragment布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F0EFF5" > ...
android实现手机触屏版的左右图片滚动,手指在屏幕上滑动,即可控制图片左右滑动(滚动),这各效果在android手机上已经相当常见了,制作方法并不复杂: ImageView iv = new ImageView(Sample3_8_Activity.this);/...
借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果。 1.自动显示隐藏Toolbar 首先给listView...
showImg.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); showImg.setImageResource(Indent.this.imgids[img]); // 设置显示图片 Dialog dialog = new ...
android 中调用drawBitmap时理解dip(屏幕密度)和px(像素)的区别 SQLiteDatabase 的setTransactionSuccessful作用 终于弄明白 paddingleft margineleft layout_gravity 和gravity之间的区别 自定义控件时要注意的...
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main... zxView.setLayoutParams(pm); layout.addView(zxView); }
之前看到用线性布局写的瀑布流,觉得不大好,自己想了另外一种方案, (最近发现用 网页实现瀑布流 再用WebView加载才能完美实现效果) 原理使用RelativeLayout任意定位位置 核心方法 private void ...
提示部分支持图片和文字提示 先看效果图 使用步骤。 使用起来特别简单,只需要把GuideView这个类复制到你的项目中就可以了 *使用图片 ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.img_...
* @see android.app.ExpandableListActivity#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo) */ @Override public void onCreateContextMenu...
FlexboxLayout 是 Android 上实现了类似 CSS Flexible Box Layout Module 效果的界面排版。示例代码:FlexboxLayout flexboxLayout = (FlexboxLayout) findViewById(R.id.flexbox_layout); flexboxLayout....
Android设置桌面壁纸及恢复默认墙纸,程序中将创建一个存储壁纸图片资源的id数组,定义被选中的图片在id数组中的索引,需要自定义一个BaseAdapter,然后: ImageView iv = new ImageView(Sample_12_2.this);//新建...
Android 代码写控件代替XML简单实例 简单的一个Button控件的练习。 实现代码: Button btn = new Button(HandlerToActivity.this); LinearLayout.LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT...
在xml中创建菜单实例及内容页 xmlns:android=...
有些红点View,需要你在布局中设置,要是很多地方有设置红点操作,则比较麻烦。而该案例不需要改变你之前的任何代码,只是需要按照步骤即可设置红点。设置红点view到你的控件的逻辑操作代码如下所示。如果控件父布局...
Android 即时添加textview、imageview内容项,适时动态添加这两个组件,实现时首先创建了所有资源图片(andy、bill、edgar、torvalds、turing)id的数组和所有资源字符串(andy、bill、edgar、torvalds、turing)id...
借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果。 1.自动显示隐藏Toolbar 首先给listView...
触屏触摸活动测试代码,声明ImageView变量,声明相关变量作为存储图片宽高,位置使用,声明存储屏幕的分辨率变量,取得屏幕对象,取得屏幕解析像素,通过findViewById构造器创建ImageView对象,将图片从Drawable赋值给...