Android布局属性
1、可以使某些资源文件或UI组件可重用
按Ctrl+1键
2、定义一个文本编辑框,使用
绝对定位
android:layout_x="20dip"
android:layout_y="80dip"
3、控件位置
3.1布局属性详解
RelativeLayout用到的一些重要的属性:
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
android:gravity
android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右
android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity="right"则button靠右
android:layout_alignParentRight
使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
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属性设置
1.当前组件在得到焦点的时候,自动选取该组件内的所有的文本内容
android:selectAllOnFocus="true"
2.当前组件只能输入数字
android:phoneNumber="true"
3.当前组件显示的提示信息,被选中时,内容自动被清空
android:hint="@string/edtPhone
7、按钮以及属性(B utton……)
普通文字按钮android:background=""
普通图片按钮
按下时显示不同图片的按钮(利用配置文件解决即,
button_selector.xml,android:src="@drawable/button_selector")
B utton_selector.xml:指定按钮按钮下时的图片
android:drawable="@drawable/red" /> 指定按钮松开时的图片: android:drawable="@drawable/purple" /> 带文字的图片按钮android:background="@drawable/button_selector" android:text="@string/btnImage" 8、单选按钮和多选按钮(RadioGroup、CheckBox) 定义一组单选框 android:layout_gravity="center_horizontal"> 定义一个单选框 定义一个垂直的线性布局 定义三个复选框 android:checked="true"/>…… 9、带类似开关式的按钮(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(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(); }}}); 定义模拟时钟: 定义数字时钟: 计时器: android:textSize="12pt"…… android:textColor="#ffff0000"/> 10、图像视图(ImageView) android:layout_marginLeft="10dp"距离左边10 dp android:layout_marginTop="100dp"距离上面100dp/> 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 = new ArrayAdapter simple_dropdown_item_1line:android自带的配置文件。 4、设置Adapter actv.setAdapter(adapter); 12、下拉列表框(Spinner) 定义了一个Spinner组件,指定该显示该Spinner组件的数组: 使用数组资源设置该下拉列表框的列表项目: android:entries="@array/books" books.xml: 设置该列表选择框的提示 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) 定义一个水平进度条 android:max="100"android:progress="30" style="@android:style/Widget.ProgressBar.Horizontal" /> Widget.ProgressBar.Horizontal:系统自带布局方式。 15、拖动条(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) 定义一个星级评分条: android:numStars="5"//星的数量android:max="50"//总长度 android:progress="10"//单位长度android:stepSize=".5"//允许最小尺寸/> 17、选项卡(TabHost) 定义一个TabHost 添加几个布局: Activity: 1、TabHost th = getTabHost();//获取选项卡 2、LayoutInflater.from(this).inflate(https://www.360docs.net/doc/2917652420.html,yout.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(布局文件): android:divider="@drawable/green"//每个选项之间的分界图片 android:id="@+id/lv1"> Activity(方法2): findViewById String [] arr= {"大师兄","fdasfd","dafa"}; ArrayAdapter 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 for (int i = 0; i < arr.length; i++) { HashMap item.put("num1", i); item.put("value1", arr[i]); ata.add(item); } SimpleAdapter adapter = new SimpleAdapter(this, data,https://www.360docs.net/doc/2917652420.html,yout.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 for (int i = 0; i < names.length; i++) { Map 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, https://www.360docs.net/doc/2917652420.html,yout.main, new String[] { "personName", "header" ,"personInfo"}, new int[] { https://www.360docs.net/doc/2917652420.html,, R.id.header,https://www.360docs.net/doc/2917652420.html, }); 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 Android布局属性大全 布局: AbsoluteLayout(绝对布局): xmlns:android="https://www.360docs.net/doc/2917652420.html,/apk/res/android" style="@..." android:clipChildren="true|false" android:clipToPadding="true|false" android:layoutAnimation="@---" android:animationCache="true|false" android:persistentDrawingCache="none|animation|scrolling|all":持续高速缓存绘图 android:alwaysDrawnWithCache="true|false" android:andStatesFromChildre="true|false" android:descendantFocusability="beforeDescendants|afterDescendants|bl ocksDescendants":后裔可聚焦 android:id="@+id/absoluteLayout" android:tag="@---" android:android:scrollX="---" android:android:scrollY="---" android:background="@---" android:padding="----" android:paddingLeft="----" android:paddingTop="----" android:paddingRight="----" android:paddingBotton="---" android:focusable="true|false" android:focusableInTouchMode="true|false" android:visibility="visible|invisible|gone" android:fitsSystemWindows="true|false":适合系统窗口 android:scrollbars="none|horizontal|vertical" android:scrollbarStyle="insideOverlay(内覆盖)|insideInset(内插 图)|outsideOverlay(外覆盖)|outsideInset(外插图)" android:isScrollContainer="true|false":是一个滚动集合 android:fadeScrollbars="true|false":褪色的滚动条 android:scrollbarFadeDuration="---":卷轴淡出 android:scrollDefaultDelayBeforeFade="---":滚动前默认延迟 android:scrollbarSize="---" android:scrollbarThumbHorizontal="@----":拇指水平滚动条 android:scrollbarThumbVertical="@----":拇指垂直滚动条 android:scrollbarTrackVertical="@---":垂直滚动条轨道 android:scrollbarTrackHorizontal="@---":水平滚动条轨道 android:scrollbarAlwaysDrawHorizontalTrack="true|false":水平滚动条总是吸引轨道 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘 android:layout_alignParentLeft 贴紧父元素的左边缘 android:layout_alignParentRight 贴紧父元素的右边缘 android:layout_alignParentTop 贴紧父元素的上边缘 android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物 第二类:属性值必须为id的引用名“@id/id-name” android:layout_below 在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左边 android:layout_toRightOf 在某元素的右边 android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐 android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐 android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐 android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐 第三类:属性值为具体的像素值,如30dip,40px android:layout_marginBottom 离某元素底边缘的距离 android:layout_marginLeft 离某元素左边缘的距离 android:layout_marginRight 离某元素右边缘的距离 android:layout_marginTop 离某元素上边缘的距离 EditText的android:hint 设置EditText为空时输入框内的提示信息。 android:gravity android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.以button为例,android:gravity="right"则button上面的文字靠右 android:layout_gravity android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在 Android 开发之旅:view的几种布局方式及实践 https://www.360docs.net/doc/2917652420.html,/1943397/363552 2010-06-06 14:14:00 标签:布局 View 实践移动开发 Android 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。 https://www.360docs.net/doc/2917652420.html,/1943397/363552 引言 通过前面两篇: 1.Android 开发之旅:又见Hello World! 2.Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示方法,以后就不会在针对布局方面做过多的介绍。View的布局显示方式有下面几种:线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)、绝对布局(AbsoluteLayout)。本文虽然是介绍View的布局方式,但不仅仅是这样,其中涉及了很多小的知识点,绝对能给你带来Android大餐! 本文的主要内容就是分别介绍以上视图的七种布局显示方式效果及实现,大纲如下: 1.1、View布局概述 2.2、线性布局(Linear Layout) 1. 2.1、Tips:android:layout_weight="1" 3.3、相对布局(Relative Layout) 4.4、表格布局(Table Layout) 5.5、列表视图(List View) 1. 5.1、一个小的改进 2. 5.2、补充说明 6.6、网格视图(Grid View) 7.7 、绝对布局() 8.8、标签布局(Tab Layout) 1、view的布局显示概述 通过前面的学习我们知道:在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。Android中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。 View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。ViewGroup类是布局(layout)和视图容器(View container)的基类,此类也定义了https://www.360docs.net/doc/2917652420.html,youtParams类,它作为布局参数的基类,此类告诉父视图其中的子视图想如何显示。例如,XML布局文件中名为layout_something的属性(参加上篇的4.2节)。我们要介绍的View的布局方式的类,都是直接或间接继承自ViewGroup类,如下图所示: 我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!” 程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View 的几种布局显示方法,以后就不会在针对布局方面做过多的介绍。View的布局显示方式有下面几种: 线性布局(Linear Layout)、 相对布局(Relative Layout)、 表格布局(Table Layout)、 网格视图(Grid View)、 标签布局(Tab Layout)、 列表视图(List View)、 绝对布局(AbsoluteLayout)。本文虽然是介绍View的布局方式,但不仅仅是这样,其中涉及了很多小的知识点,绝对能给你带来Android大餐! 本文的主要内容就是分别介绍以上视图的七种布局显示方式效果及实现,大纲如下: ?1、View布局概述 ?2、线性布局(Linear Layout) o 2.1、Tips:android:layout_weight="1" ?3、相对布局(Relative Layout) ?4、表格布局(Table Layout) ?5、列表视图(List View) o 5.1、一个小的改进 o 5.2、补充说明 ?6、网格视图(Grid View) ?7 、绝对布局() ?8、标签布局(Tab Layout) 1、view的布局显示概述 通过前面的学习我们知道:在一个Android应用程序中,用户界面通过View和ViewGroup对象构建。A ndroid中有很多种View和ViewGroup,他们都继承自View类。View对象是Android平台上表示用户界面的基本单元。 View的布局显示方式直接影响用户界面,View的布局方式是指一组View元素如何布局,准确的说是一个ViewGroup中包含的一些View怎么样布局。ViewGroup类是布局(layout)和视图容器(View containe r)的基类,此类也定义了https://www.360docs.net/doc/2917652420.html,youtParams类,它作为布局参数的基类,此 类告诉父视图其中的子视图想如何显示。例如,XML布局文件中名为layout_so mething的属性(参加上篇的4.2节)。我们要介绍的View的布局方式的类,都是直接或间接继承自ViewGroup类,如下图所示: Android 布局详解【图文】 Android 布局是开发中非常重要的一个知识部分,它的布局分为以下几种: Linear Layout:线性布局 Relative Layout:相对布局 Table Layout:表格布局 FrameLayout AbsoluteLayout Grid View:网格布局 Tab Layout:选项卡布局 List View:列表布局 一、Linear Layout 简单来说,直着排,横着排都可以,还可以嵌套,此布局运用的非常多。下面直接上示例代码及截图: 接下来,看一下布局XML文件: Android布局属性大全
android布局属性详解
Android 开发之旅-view的几种布局方式及实践
Android七种布局解析
Android_布局详解【图文】