设置文本显示

继承ViewText的widget有以下集中设置文本显示的方式:一、在Android XML中 android:text="xxxxx"中设定;二、在程序中通过widget.setText("xxxx");三、在res/values/strings.xml中设置,然后通过R.string.xxx在Android或者在程序中使用。对于要适配多国语言,建议采用第三种方式,只需对stings.xml的相关词汇进行翻译即可。

OptionMenu

在手机上,有一个Menu按钮,按下后,可以显示OptionMenu,如下处理

@Override
public boolean onCreateOptionsMenu (Menu menu) {
// TODO Auto-generated method stub
//add (int groupId, int itemId, int order, int titleRes),对于exit的menuItem,0表示GroupId,1表示ItemId,这两个Id将用于Menu按下后触发回调函数中用于判断具体是哪个menuItem,第三个表示拜访的顺序,在这里第一个是exit,第二个是about,第四个参数引向strings.xml中定义的内容。
menu.add(0,1,1,R.string.menu_exit);
menu.add(0,2,2,R.string.menu_about);
return super.onCreateOptionsMenu(menu);
}

创建的Menu后,需要触发回调函数,这也是一个override的方法,如下处理:

@Override
public boolean onOptionsItemSelected (MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId () == 1){ //在这个例子中我们只有一个group,所有只需检查itemId就可以了。
finish ();
}else if(item.getItemId () == 2){
... ...
}
return super.onOptionsItemSelected(item);
}

LinearLayout

从上至下,或从左到右。是box model,基于方块依次顺序方式排列。RadioGroup是LinearLayout的继承项

orientation

在Android XML中使用android:orientation,值为horizontal或者vertical,排版将是水平从左到右,或者竖直从上到下。在java程序中,我们可以通过setOrientation() 来改变方向,例如setOrientation(LinearLayout.HORIZONTAL);

fill model

一个widget根据其内容有一个最合适的大小,也就是natural大小,然则我们通才需要根据容器的大小进行排版,在LinearLayout中android:layout_width和android:layout_height是必须设置的,有三种方式:
1)指定尺寸,例如125px表示125pixels
2)wrap_content,这就是natual的尺寸
3)fill_parent:填满容器剩余的尺寸。

fill_parent将会使用剩余所有的空间,哪怕是后面还有widget,也就将空间填满。而我们并不希望如此,希望剩余的widget仍然有效的排列,而是希望将其他widget排列后的剩余空间。我们将使用layout_weight的属性。

weight

layout_weight和wrap_content共同使用,缺省layout_weight为0,也就是size为natural size。(如果和fill_parent相结合,其结果无法预测,因此需特别注意)如果我们希望widget使用了剩余的空间,那么可以设置layout_weight一个有效值。这里是权重,如果有多个widget,就按此权重来分配剩余的空间。如果所有的layout_weight一样,这些widget就对剩余空间进行等分。有时我们会看到不一定很严格按照设定的权重比例来分配空间,必须能支持natural的大小,所以可能会有适配。

Gravity

线性布局从上到下,或这从左到右,可以使用gravity,提供align的方式,不按此顺序。对于android:layout_width="wrap_content" ,android:layout_gravity可以设置为left, center_horizontal, righ。在JAVA代码中,可以使用 setGravity(),例如setGravity(Gravity.LEFT); setGravity(Gravity.CENTER_HORIZONTAL);

需要注意的是在widget中也是有相应的属性,android:gravity,这里指的是widget中文字在widget中的排放位置,例如android:gravity="right"。

右图是button结合weight和gravity的例子

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="false"
android:text="test1"
android:layout_gravity="left"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
android:singleLine="false"
android:text="test2\ncenter_horizontal"
android:layout_gravity="center_horizontal"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="false"
android:text="test3\nLine_2\nLine_3"
android:layout_gravity="right"
/>

如果我们将第三个的android:layout_gravity="right"改为 android:gravity="right",结果如下图:


Pad和Margin

缺省地,各widget之间是紧密排列的,如果需要留边,可以采用padding的方式,如图所示。在XML中使用android:padding,android:paddingLeft, android:paddingRight,android:paddingTop, 和android:paddingBottom。在Java code中可以使用setPadding() 来处理。例如android:paddingTop="30px"。

需要注意的是,如果设置背景android:background,那么包括widget和padding的区域都是看不到背景的。也就是widget实际上包含了padding的尺寸。为了避免这种情况,我们可以使用margin来替代,例如android:layout_marginTop,例如android:layout_marginLeft="100px"

通俗地,padding可以理解为widget的内边框,margin可以理解为外边框。

相关链接: 我的Android开发相关文章

更多相关文章

  1. Android(安卓)架构解析及驱动 键盘篇
  2. Android和IOS等效MD5加密
  3. Android中程序与Service交互的方式——综述
  4. 理解WebKit和Chromium: 基于Chromium内核的Android(安卓)WebView
  5. Android拍照上传至PHP服务器并写入MySql数据库(上)
  6. 【环境配置】配置ndk
  7. Android生成Market分享链接
  8. Android中一张图片加载后所占用内存大小的获取与测试
  9. android httpClient 支持HTTPS的处理方式

随机推荐

  1. Android 设置界面修改为Iphone的tab菜单
  2. Android 资源加载机制剖析
  3. Android之获取手机UDID
  4. Android的升级策略
  5. Android adb常用指令使用指南
  6. Android Thread和AsyncTask的区别和联系
  7. 浅谈android中的目录结构
  8. Android用户界面 UI组件--TextView及其子
  9. 关于Android异步 RxJava和Handler
  10. Android关机重启重启至recovery应用开发