android布局layout中的一些属性

1、**可以使某些资源文件或UI组件可重用**

 

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=_""_

普通图片按钮 

按下时显示不同图片的按钮(利用配置文件解决即,button_selector.xml, android:src=_"@drawable/button_selector"_ )

Button_selector.xml:指定按钮按钮下时的图片



指定按钮松开时的图片:



带文字的图片按钮 android:background=_"@drawable/button_selector"_

android:text=_"@string/btnImage"_

**8、单选按钮和多选按钮(**RadioGroup、CheckBox**)**

定义一组单选框 

定义一个单选框 

定义一个垂直的线性布局

 ……

**9、带类似开关式的按钮(ToggleButton)**

定义一个ToggleButton按钮: 

定义一个可以动态改变方向的线性布局:

TestActivity:

ToggleButton tb = (ToggleButton) findViewById(R.id._toggle_);

layout = (LinearLayout) findViewById(R.id._test_);

匿名内部类:

tb.setOnCheckedChangeListener(new

OnCheckedChangeListener() {

public void onCheckedChanged(CompoundButton arg0, 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();

} } });

定义模拟时钟:

定义数字时钟:

计时器:

**10、图像视图(**ImageView**)**



**11、自动完成文本框 (**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 adapter = **new** ArrayAdapter(**this**, android.R.layout. _simple_dropdown_item_1line_, books);

_simple_dropdown_item_1line:android自带的配置文件。_

_4、_设置Adapter

actv.setAdapter(adapter);

**12、下拉列表框(**Spinner**)**

定义了一个Spinner组件, 指定该显示该Spinner组件的数组:



使用数组资源设置该下拉列表框的列表项目:

android:entries=_"@array/books"_

_books.xml:_

Java SE

Java EE

Java ME

Linux



设置该列表选择框的提示

android:prompt=_"@string/info"_

**13、时间和日期组件(**DatePicker、TimePicker**)**

定义一个DatePicker组件(日期:年,月,日):

定义一个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**)**

定义一个水平进度条



_Widget.ProgressBar.Horizontal:_系统自带布局方式_。_

**15、拖动条(**SeekBar**)**

定义一个拖动条,并改变它的滑块外观:



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**)**

定义一个星级评分条:



**17、选项卡(TabHost)**

定义一个TabHost  …… 

添加几个布局:







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、创建

2、创建

3、中间是文本内容,最后结束  

**19、列表视图(ListView)**

创建ListView(布局文件):



Activity(方法2):

findViewById

String [] arr= {"大师兄","fdasfd","dafa"};

 ArrayAdapter arrayAdapter= **new** ArrayAdapter(**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> data = **new** ArrayList>();

**for** (**int** i = 0; i < arr.length; i++) {

HashMap item = **new** HashMap();

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> listItems = **new**  ArrayList>();

**for** (**int** i = 0; i < names.length; i++) {

Map listItem = **new** HashMap();

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配置文件:















**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(Bundle savedInstanceState

(转)

### 

### **如果,这篇博客帮您解决了问题,不妨点击一下右下角的【****推荐****】。**

### **如果,您希望更容易地发现我的新博客,不妨点击一下【加关注】。**

### **因为,我的热情需要您的肯定和支持!** 

### **感谢您的阅读,如果文章中有错误或者您有什么好的建议,也欢迎您直接留言批评指教。Thanks,friends!**

你可能感兴趣的:(androidlayout)