Android总结(二)

下拉列表框:Spinner
1.可以直接在main.xml文件中定义节点,但是在定义此元素时不能直接设置其显示的列表项,关于下拉列表框的列表项有两种配置方式。
方式一:直接通过资源文件配置:如,定义一个values\city_data.xml文件,在定义数据内容时需要使用元素指定,

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="city_labels">
        <item>北京</item>
        <item>上海</item>
        <item>南京</item>
    </string-array>
</resources>

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="color_labels">
        <item>红色</item>
        <item>绿色</item>
        <item>蓝色</item>
    </string-array>
</resources>

此时定义的是string-array的根节点,表示其中配置的是一个数组的集合,而其中的每一个节点表示每一个列表项的内容,随后在layout\main.xml文件中定义节点时,直接使用android:entries=”@array/city_labels”属性即可读取信息。
方式二:通过android.widget.ArrayAdapter类读取资源文件或指定具体设置的数据。如果通过配置main.xml文件可以使用android:entries属性设置内容,但如果是在Activity中编写的,必须依靠ArrayAdapter类完成。此类有两个主要的功能:读取资源文件中定义的列表项或者是通过List集合设置列表项。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView 
        android:id="@+id/info_city"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="请选择您喜欢的城市:" />
    <Spinner 
        android:id="@+id/mycity"
//定义提示信息,在strings.xml中定义
        android:prompt="@string/city_prompt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
//使用文件的文本资源
        android:entries="@array/city_labels"/>
    <TextView 
        android:id="@+id/info_color"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="请选择您喜欢的颜色:" />
    <Spinner 
        android:id="@+id/mycolor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <TextView 
        android:id="@+id/info_edu"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="请选择您的学历:" />
    <Spinner 
        android:id="@+id/myedu"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

本程序分别使用定义了3个下拉列表框:
a.列表框1,@+id/mycity:直接通过android:entries=”@array/city_labels”读取资源文件;;b.列表框2,@+id/mycolor:只是定义了一个下拉别表框组件,此组件内容要通过程序读取资源文件设置。;;c.列表框3,@+id/myedu:定义了一个下拉列表框组件,以后通过程序进行内容的设置。
public class MySpinnerDemo extends Activity {
private Spinner spiColor = null; // 表示要读取的颜色列表框
private Spinner spiEdu = null; // 定义下拉列表
private ArrayAdapter adapterColor = null; // 下拉列表内容适配器
private ArrayAdapter adapterEdu = null; //下拉列表内容适配器
private List dataEdu = null; // 定义集合保存下拉列表选项

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.main);
    this.spiColor = (Spinner) super.findViewById(R.id.mycolor); // 取得颜色的下拉框
    this.spiColor.setPrompt("请选择您喜欢的颜色:");
    this.adapterColor = ArrayAdapter.createFromResource(this,
            R.array.color_labels, android.R.layout.simple_spinner_item); // 实例化了ArrayAdapter
    this.adapterColor
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 设置列表显示风格
    this.spiColor.setAdapter(this.adapterColor); // 设置下拉列表选项

    // 配置List集合包装的下拉框内容
    this.dataEdu = new ArrayList<CharSequence>();
    this.dataEdu.add("大学");
    this.dataEdu.add("研究生");
    this.dataEdu.add("高中");

    this.spiEdu = (Spinner) super.findViewById(R.id.myedu); // 取得下拉框
    this.spiEdu.setPrompt("请选择您喜欢的学历:");
    this.adapterEdu = new ArrayAdapter<CharSequence>(this,
            android.R.layout.simple_spinner_item, this.dataEdu); // 准备好下拉列表框的内容
    this.adapterEdu 
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 换个风格
    this.spiEdu.setAdapter(this.adapterEdu);

}

}
图片视图:ImageView
1.主要功能是为图片展示提供一个容器。保存在drawable-*文件夹中的图片名称,只能由字母、数字、“_” 、“.” 、组成。
android:src=”@drawable/mldn_3g”//从drawable中读取图片ID
图片按钮:ImageButton
用法同Button,只不过该Button带有图片。
时间选择器:TimePicker
1.使用TimePicker可以进行时间的快速调整。在配置文件中,组件的默认运行方式为12小时制,编程实现24小时制的显示如下。
public class MyTimePicker extends Activity {
private TimePicker mytp = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.main);
    this.mytp = (TimePicker) super.findViewById(R.id.tp2) ; // 取得组件
    this.mytp.setIs24HourView(true) ;   // 设置为24小时制
    this.mytp.setCurrentHour(18) ;  // 设置时
    this.mytp.setCurrentMinute(30) ;    // 设置分
}

}
日期选择器:DatePicker
1.可以完成年、月、日的设置。
public class MyDatePickerDemo extends Activity {
private DatePicker mydp = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.main);
    this.mydp = (DatePicker) super.findViewById(R.id.dp2); // 取得组件
    this.mydp.updateDate(1998, 7, 27); // 更新日期
}

}
布局管理器
线性布局管理器:LinearLayout
1.分两种形式:垂直排列和水平排列。只能进行单行布局。
在程序中定义布局:
public class MyLinearLayoutDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this); // 定义线性布局管理器
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT); // 先定义布局管理器的参数
layout.setOrientation(LinearLayout.VERTICAL); // 所有组件采用垂直方式摆放

    // 下面要定义显示组件的布局管理器,为了简单,本次只定义一个TextView组件
    LinearLayout.LayoutParams txtParam = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);// 定义组件的布局管理器参数
    TextView txt = new TextView(this); // 定义文本显示组件
    txt.setLayoutParams(txtParam); // 配置文本显示组件的参数
    txt.setText("北京魔乐科技软件学院(MLDN)"); // 配置显示文字
    txt.setTextSize(20);
    layout.addView(txt, txtParam); // 增加组件
    super.setContentView(layout, param); // 增加新的布局管理器
}

}

框架布局管理器:FramLayout
1.所有的组件放在左上角,逐个覆盖。

在程序中定义布局:
public class MyFrameLayoutDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout layout = new FrameLayout(this); // 定义帧布局管理器
FrameLayout.LayoutParams layoutParam = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT); // 定义布局管理器的参数
FrameLayout.LayoutParams viewParam = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT); // 定义显示组件的参数
ImageView img = new ImageView(this); // 定义图片组件
img.setImageResource(R.drawable.mldn_3g); // 定义显示的图片
EditText edit = new EditText(this); // 定义文本输入组件
edit.setText(“请输入您的姓名…”); // 设置显示的文字
Button but = new Button(this); // 定义按钮
but.setText(“按我”); // 设置按钮的文字
layout.addView(img, viewParam); // 增加组件
layout.addView(edit, viewParam); // 增加组件
layout.addView(but, viewParam); // 增加组件
super.setContentView(layout, layoutParam); // 向屏幕上增加布局管理器
}
}
表格布局管理器:TableLayout
1.在该布局管理器中,要使用TableRow进行表格行的控制,之后所有的组件要在TableRow中增加。表格布局主要用于列表操作上。
2.如果数据内容过多显示不完整,可以用shrinkColumns属性将其定义成可收缩列。android:shrinkColumn=”3”;//定义为可收缩,可根据文字信息调整显示格式。
让某个列不显示可以使用collapseColumns;如果要想多个列不显示,直接使用逗号分开即可。 android:collapseColumns=”0,3”//设置第1,4列不显示
3.如果想为表格的显示设置背景图片,可以使用android:background 属性指定背景图片,但是此时背景图片应该首先保存在res\drawable-*文件夹中。
4.在程序中定义布局:
public class MyTableLayoutDemo extends Activity {
private String titleData[][] = new String[][] {
{ “ID”, “姓名”, “EMAIL”, “地址” },
{ “MLDN”, “魔乐科技”, “mldnkf@163.com”,
“北京西城区甲11号德外大街德胜科技园美江大厦 A座 - 6层 —— MLDN魔乐科技” },
{ “LXH”, “李兴华”, “mldnqa@163.com”, “天津” } }; // 定义要显示的数据

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TableLayout layout = new TableLayout(this); // 定义表格布局
    TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(
            ViewGroup.LayoutParams.FILL_PARENT,
            ViewGroup.LayoutParams.FILL_PARENT); // 定义布局管理器的参数
    layout.setBackgroundResource(R.drawable.mldn_logo); // 定义背景图片
    for (int x = 0; x < this.titleData.length; x++) { // 循环设置表格行
        TableRow row = new TableRow(this); // 定义表格行
        for (int y = 0; y < this.titleData[x].length; y++) {
            TextView text = new TextView(this);
            text.setText(this.titleData[x][y]); // 设置文本内容
            row.addView(text, y); // 加入一个编号
        }
        layout.addView(row); // 向表格之中增加若干个表格行
    }
    super.setContentView(layout, layoutParam); // 设置显示
}

}
相对布局管理器:RelativeLayout
1.相对布局是参考某一控件对组件进行拜访,可以通过控制将组件摆放在一个指定参考组件的上、下、左、右等位置,这些操作可以直接通过各个组件提供的属性完成。
在程序中进行布局:
public class MyRelativeLayoutDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 要读取已经存在的布局管理器
RelativeLayout rl = (RelativeLayout) super.findViewById(R.id.mylayout); // 找到布局管理器
RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT); // 定义参数
param.addRule(RelativeLayout.BELOW, R.id.mybut); // 新的组件放在mybut组件之下
param.addRule(RelativeLayout.RIGHT_OF, R.id.imga); // 放在第一张图片的右边
EditText text = new EditText(this); // 输入文本
rl.addView(text, param); // 是向一个布局管理器之中增加组件
}
}
布局管理器的嵌套
绝对定位布局管理器:AbsoluteLayout
1.采用一种坐标定位显示的布局管理器,它会将屏幕按X坐标和Y坐标的形式对组件进行排列。要想使用绝对定位布局管理器,需要每一个组件中的以下两个属性支持。android:layout_x:组件在X轴上的坐标;android:layout_y:组件在Y轴上的坐标。在实际开发中不建议使用绝对定位的布局管理器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值