Android布局layout中的一些属性(转)

1、可以使某些资源文件或UI组件可重用
<include layout="@layout/other"/>
2、定义一个文本编辑框,使用绝对定位
android:layout_x="20dip"
android:layout_y="80dip"
3、控件位置

android:layout_centerHorizontal 控制该组件是否位于布局容器的**水平居中位置**
android:layout_centerVertical 控制该组件是否位于布局容器的**垂直居中位置**
android:layout_centerInParent 控制该组件是否位于布局容器的**中央位置**
android:layout_alignParentBottom 控制该组件是否与布局容器**底端对齐**
android:layout_alignParentLeft 控制该组件是否与布局容器**左边对齐**
android:layout_alignParentRight 控制该组件是否与布局容器**右边对齐**
android:layout_alignParentTop 控制该组件是否与布局容器**顶端对齐**
android:layout_toRightOf 控制该组件位于给出的ID**组件的右侧**
android:layout_toLeftOf 控制该组件位于给出的ID**组件的左侧**
android:layout_above 控制该组件位于给出的ID**组件的上方**
android:layout_below 控制该组件位于给出的ID**组件的下方**
android:layout_alignTop 控制该组件与给出的ID组件的**上边界对齐**
android:layout_alignBottom 控制该组件与给出的ID组件的**下边界对齐**
android:layout_alignLeft 控制该组件与给出的ID组件的**左边界对齐**
android:layout_alignRight 控制该组件与给出的ID组件的**右边界对齐**

4、设置单元格内的控件的形状(可压缩,可伸长,可隐藏等)
android:shrinkColumns 设置该列的所有单元格的宽度可以被收缩,以保证该表格能够适应父容器宽度
android:stretchColumns 设置该列的所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间
android:collapseColumns 设置该列的所有单元格会被隐藏
5、TextView属性设置
设置字体为30pt android:textSize="30pt"
设置中间省略 android:singleLine="true" android:ellipsize="middle"
对邮件增加链接 android:autoLink="email" android:autoLink="email"
测试密码框 android:password="true"
绘制一张图片 android:drawableLeft="@drawable/icon"
6、EditText属性设置
当前组件在得到焦点的时候,自动选取该组件内的所有的文本内容
android:selectAllOnFocus="true"
当前组件只能输入数字 android:phoneNumber="true"
当前组件显示的提示信息,被选中时,内容自动被清空
android:hint="@string/edtPhone
7、按钮以及属性(Button……
普通文字按钮 android:background=""
普通图片按钮 <ImageButton android:src=""/>

按下时显示不同图片的按钮(利用配置文件解决即,button_selector.xml, android:src="@drawable/button_selector" )
Button_selector.xml:指定按钮按钮下时的图片
<item android:state_pressed="true"
android:drawable="@drawable/red"
/>
指定按钮松开时的图片:
<item android:state_pressed="false"
android:drawable="@drawable/purple"
/>
带文字的图片按钮 android:background=
"@drawable/button_selector"

android:text="@string/btnImage"
8、单选按钮和多选按钮(RadioGroup、CheckBox
定义一组单选框 <RadioGroup android:orientation="vertical"
android:layout_gravity="center_horizontal">
定义一个单选框 <RadioButton android:text="@string/male"/>
定义一个垂直的线性布局
<LinearLayout android:layout_gravity="center_horizontal"
定义三个复选框
<CheckBox android:text="@string/red"
android:checked="true" /> ……
9、带类似开关式的按钮(ToggleButton)
定义一个ToggleButton按钮: <ToggleButton
android:textOff="@string/layoutH"
android:textOn="@string/layoutV" />
定义一个可以动态改变方向的线性布局:
TestActivity:
ToggleButton tb = (ToggleButton) findViewById(R.id.toggle);
layout = (LinearLayout) findViewById(R.id.test);
匿名内部类:
tb.setOnCheckedChangeListener(new
OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButtonarg0, boolean arg1) {
if (arg1) {
layout.setOrientation(LinearLayout.HORIZONTAL);
} else {
layout.setOrientation(LinearLayout.VERTICAL);
}}});
9、计时器组件(Chronometer
获取计时器组件:
final Chronometer chro = (Chronometer) findViewById(R.id.test);
改变显示的信息内容,使用"%s"表示计时信息
chro.setFormat("计时信息:%s");
获取“开始”按钮
Button btnStart = (Button)findViewById(R.id.start);
获取事件监听:
btnStart.setOnClickListener(new OnClickListener(){

public void onClick(View arg0) {
设置开始计时时间:
SystemClock系统时钟类,
elapsedRealtime方法是得到当前系统的真实时间
hro.setBase(SystemClock.elapsedRealtime());
启动计时器:
chro.start();
} });
时钟改变一次监听一次:
chro.setOnChronometerTickListener(new
OnChronometerTickListener() {
public void onChronometerTick(Chronometer ch) {
如果从开始计时到现在超过了20s。(15 - 11 > 20 * 1000)
Log.i("TestActivity",SystemClock.elapsedRealtime()

  • "");
    if (SystemClock.elapsedRealtime() -ch.getBase() >
    20 * 1000) {
    ch.stop();
    } } });
    定义模拟时钟:<AnalogClock …… />
    定义数字时钟:<DigitalClock ……android:textSize="14pt" />
    计时器:<Chronometer android:id="@+id/test" ……
    android:textSize="12pt" ……
    android:textColor="#ffff0000" />
    10、
    图像视图(ImageView)*
    <ImageView android:src="@drawable/icon"
    android:layout_marginLeft="10dp" 距离左边10dp
    android:layout_marginTop="100dp" 距离上面100dp/>
    11、自动完成文本框AutoCompleteTextView)**
    指定输入一个字符后进行提示:<AutoCompleteTextView />
    设置出现在下拉菜单中的提示标题:** android:completionHint="@string/title"
    设置下拉菜单的宽度: android:dropDownWidth="100dp"
    设置下拉菜单与文本框之间的水平偏移:android:dropDownHorizontalOffset="30dp"
    设置用户至少输入几个字符才会显示提示:android:completionThreshold="2"
    具体实现(Activity):
    1、定义字符串数组,作为提示的文本
    String[] books = new String[]{ "active", "activity", "activity", "apple","apple" };
    2、获取CompleteTextView上下文对象:
    AutoCompleteTextView actv =(AutoCompleteTextView) findViewById(R.id.auto);
    3、创建一个ArrayAdapter,封装数据
    ArrayAdapter<String>adapter = new ArrayAdapter<String>(this, android.R.layout.* simple_dropdown_item_1line, books);
    simple_dropdown_item_1line:android自带的配置文件。
    4、设置Adapter
    actv.setAdapter(adapter);
    12、下拉列表框(Spinner
    *
    定义了一个Spinner组件, 指定该显示该Spinner组件的数组:
    <Spinner …… />
    使用数组资源设置该下拉列表框的列表项目:
    android:entries="@array/books"
    books.xml:<string-array name="books">
    <item>Java SE</item>
    <item>Java EE</item>
    <item>Java ME</item>
    <item>Linux</item>
    </string-array>
    设置该列表选择框的提示
    android:prompt="@string/info"
    13、时间和日期组件(DatePicker、TimePicker
    定义一个DatePicker组件(日期:年,月,日):<DatePicker …… />
    定义一个TimePicker组件(时间:含上下午 ):<TimePicker …… />
    Activity:
    引用布局文件中的组件:findViewById();
    获取当前的年、月、日、小时、分钟:Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month= c.get(Calendar.MONTH);
    day = c.get(Calendar.DAY_OF_MONTH);
    hour = c.get(Calendar.HOUR);
    minute = c.get(Calendar.MINUTE);
    用于显示时间的方法(show):
    private void showDate(int year, int month, int day, int hour, int minute){
    EditText show = (EditText)findViewById(R.id.show);
    show.setText("您的购买日期为:" +year + "年" + month + "月" + day + "日 " + hour
  • "时" +minute + "分"); }
    初始化DatePicker组件,初始化时指定监听器:
    datePicker.init(year, month, day, new OnDateChangedListener(){
    public void onDateChanged(DatePicker arg0, int year, int month,** int** day){ TestActivity.this.year = year;
    TestActivity.this.month = month;
    TestActivity.this.day = day;
    // 显示当前日期、时间
    showDate(year, month, day, hour, minute); }});
    为TimePicker指定监听器:
    timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){
    public void onTimeChanged(TimePicker arg0, int hour, int minute){
    TestActivity.this.hour = hour;
    TestActivity.this.minute = minute;
    // 显示当前日期、时间
    showDate(year, month, day, hour, minute);}});
    14、水平进度条(ProgressBar
    定义一个水平进度条
    <ProgressBar android:id="@+id/bar" ……
    android:max="100" android:progress="30"
    style="@android:style/Widget.ProgressBar.Horizontal" />
    Widget.ProgressBar.Horizontal:系统自带布局方式。
    15、
    拖动条(SeekBar)**
    定义一个拖动条,并改变它的滑块外观:
    <SeekBar
    android:id="@+id/seekbar" ……
    android:max="255" android:progress="120"
    android:thumb="@drawable/marker" (更改滑块外观)/>
    Activity:
    1、 findViewById
    2、 事件监听器:
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
    // 当拖动条的滑块位置发生改变时触发该方法
    public void onProgressChanged(SeekBar arg0, int progress,** boolean** fromUser) {image.setAlpha(progress); }// 设置透明度
    public void onStartTrackingTouch(SeekBar bar) {}
    public void onStopTrackingTouch(SeekBar bar) {}});
    16、星级评分条(RatingBar
    定义一个星级评分条:
    <RatingBar android:id="@+id/rating" ……
    android:numStars="5" //星的数量 android:max="50"//总长度
    android:progress="10"//单位长度 android:stepSize=".5"//允许最小尺寸/>
    17、选项卡(****TabHost****)
    定义一个TabHost <TabHost ……> …… </TabHost>
    添加几个布局:
    <LinearLayout android:id="@+id/tb1" android:orientation="vertical" >
    <LinearLayout android:id="@+id/tb2" android:orientation="vertical" >
    <LinearLayout android:id="@+id/tb3" android:orientation="vertical" >
    Activity:
    1、 TabHost th = getTabHost();//获取选项卡
    2、 LayoutInflater.from(this).inflate(R.layout.main,th.getTabContentView(),true) //获取布局文件
    3、 在选项卡中添加已有的布局:
    th.addTab(th.newTabSpec("t1").setIndicator("软件").setContent(R.id.tb1));
    th.addTab(th.newTabSpec("t2").setIndicator("动漫",getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.tb2));
    th.addTab(th.newTabSpec("t3").setIndicator("网络").setContent(R.id.tb3));
    18、滚动条(****ScrollView****)
    1、创建<ScrollView:>
    2、创建<HorizontalScrollView>
    3、中间是文本内容,最后结束 </HorizontalScrollView> </ScrollView>
    19、列表视图(****ListView****)
    创建ListView(布局文件):
    <ListView ……
    android:divider="@drawable/green"//每个选项之间的分界图片
    android:id="@+id/lv1"></ListView>
    Activity(方法2):
    findViewById
    String [] arr= {"大师兄","fdasfd","dafa"};
    ArrayAdapter<String>arrayAdapter= new ArrayAdapter<String>(this,
    android.R.layout.simple_expandable_list_item_1,arr);
    lv.setAdapter(arrayAdapter);
    20、详解simple_list_item
    1、 simple_list_item_1: 每一个列表项都是一个普通的TextView
    2、 simple_list_item_2:每一个列表项都是一个普通的TextView,字体略大,TextView 显示 标题,TextView显示内容,因此需要两组数据,并且指定每组数据和两个TextView的对应关系
    3、simple_list_item_checked:每一个列表项都是一个已勾选的列表项
    4、simple_list_item_multiple_choice:每一个列表项都是带多选项
    5、simple_list_item_single_choice:每一个列表项都是带单选项
    21、列表(ListView)
    定义数组:String[] arr = { "刘德华", "张学友", "黎明", "郭富城" };
    将数组中的内容添加到列表中:
    List<HashMap<String,Object>> data = new ArrayList<HashMap<String, Object>>();
    for (int i = 0; i < arr.length; i++) {
    HashMap<String, Object>item = new HashMap<String, Object>();
    item.put("num1",i); item.put("value1", arr[i]);
    ata.add(item); }
    SimpleAdapter adapter = new SimpleAdapter(this,
    data,android.R.layout.simple_list_item_2,
    new String[]{"num1","value1"},
    new int[]{android.R.id.text1,android.R.id.text2});
    // 设置该窗口显示列表
    setListAdapter(adapter);
    形式二:
    1、 创建数组,以及对应图标:
    private String[] names = new String[] { "唐伯虎", "祝枝山", "文征明", "徐祯卿" };
    private int[] imageIds = new int[]{ R.drawable.icon,
    R.drawable.icon,R.drawable.icon, R.drawable.icon };
    private String[] values = new String[]{"1","2","3","4"};
    2、 重写方法(onCreate(Bundle savedInstanceState)
    // 创建一个List集合,List集合的元素是Map
    List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();
    for (int i = 0; i < names.length; i++) {
    Map<String,Object> listItem = new HashMap<String, Object>();
    listItem.put("header", imageIds[i]);
    listItem.put("personName", names[i]);
    listItem.put("personInfo", values[i]);
    listItems.add(listItem); }
    // 创建一个SimpleAdapter
    SimpleAdapter simpleAdapter= new SimpleAdapter(this, listItems,
    R.layout.main, new String[]{ "personName", "header" ,"personInfo"},
    new int[] { R.id.name, R.id.header,R.id.info });
    ListView list = (ListView)findViewById(R.id.mylist);
    // 为ListView设置Adapter
    list.setAdapter(simpleAdapter);
    main.xml配置文件:

    <ListView android:id="@+id/mylist" …… />

    <ImageView android:id="@+id/header" …… />

    <TextView android:id="@+id/name" …… android:textSize="16dp"/>
    <TextView android:id="@+id/info" …android:textSize="16dp"></TextView>
    22、类似QQ上的小表情(GridView
    1、//为GridView准备数据
    int[] imageIds = new int[]{ R.drawable.bomb5, R.drawable.bomb6,
    R.drawable.bomb7,R.drawable.bomb8, R.drawable.bomb9,
    R.drawable.bomb10,R.drawable.bomb11, R.drawable.bomb12,
    R.drawable.bomb13,R.drawable.bomb14, R.drawable.bomb15,
    R.drawable.bomb16 };
    String[] infos = new String[]{"1","2","3","4","5","6","7","8","9","10","11","12"};
    2、重写(onCreate(BundlesavedInstanceSta
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容