【Android】Android(安卓)UI 开发_问答_2
Content
- 常见布局
- 线性布局
- 表格布局
- 网格布局
- 一个简单的UI
- 主题和样式
链接 【Android】Android UI 开发_问答_1.
常见布局
如何在 MainActivity.java 中设置 activity 的布局文件
- 在 onCreate 回调方法中
protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main2);}
设计布局文件的 Design 和 Text 模式什么区别?
- Design (可视化界面) 看图 可直接拖动控件 直观但不精确
Text (文本界面) 看代码
layout_toEndOf 同 layout_toRightOf 什么区别?另一对对应的属性是什么?什么区别?
- 指定控件的末端和右边
- Start 和 Left,始端和左边
Start、End的属性只适用于level 17以上,
若同时出现,则Left、Right有效
如何在工程中修改工程的最小版本?
- Gradle Scripts > build.gradle,找到 minSdkVersion,修改后面的值
水平居中和垂直居中的属性是什么?
- layout_centerVertical 和 layout_centerHorizontal
线性布局
如何新建布局文件?布局文件的文件名有什么要求?
- layout 右击,New > Layout Resource File
或 File > New > XML > Layout XML File - 后缀
.xml
文件名必须为小写字母、数字、_,这三种符号 (改)
线性布局中子控件的对齐是哪个属性?可取什么值?
android:layout_gravity
,表示相对于父视图组中的对齐方式- left、center、right (改)
线性布局的方向由哪个属性决定?可取什么值?默认值是什么?
android:orientation
- horizontal、vertical,水平、垂直
- horizontal,默认水平方向
控件的 id 可以相同吗?
- 同一布局文件中不可以,不同布局文件中可以
线性布局能嵌套使用吗?怎么用?
- 能嵌套使用
<LinearLayout><LinearLayout> ...</LinearLayout></LinearLayout>
表格布局
表格布局中的表行由哪个标签确定?
- TableRow,有一个是一行
TableRow 的宽度和高度属性是什么?默认值是什么?
-
android:layout_width
,android:layout_height
-
TableRow不需要设置宽度和高度,
它的宽度一定是 match_parent,高度一定是 wrap_content,
它其中的控件的宽度和高度均为 wrap_content
如何确定子控件所在的列?
android:layout_column
指定列数,从0开始
表格布局中,行中每列不会叠加,同列会后移
stretchColumns 属性什么意思?
- 当本列的定义总长度不足屏幕宽度时,指定列拉伸以充满屏幕
子控件如何跨列?能跨行吗?
android:layout_columnSpan
指定跨列的个数android:layout_rowSpan
指定跨行的个数 (改)
网格布局
如何修改子控件上的文字及 id?几种方式?
- 直接更改
android:text
属性的值 - 切换到可视化界面,双击更改
如何跨列?需要哪两个属性配合?怎么配合?
android:layout_columnSpan
和android:layout_gravity
android:layout_gravity = "fill"
如何跨行?
android:layout_rowSpanandroid:layout_gravity = "fill"
如何设置总列数?
- android:columnCount
子控件的位置是怎么确定的?
- 通过
android:layout_column
和android:layout_row
确定子控件位置
一个简单的UI
View 是什么?ViewGroup 是什么?他们之间什么关系?
- View 是用于创建用户交互组件的小部件的基类 (基本单元),是一块矩形区域
- ViewGroup 对象是一种不可见的容器,可容纳其他 View 控件
- ViewGroup 继承自 View
布局文件中哪里找到?布局文件中的标签是怎样的结构?
- res > layout
<bulabula>...</bulabula> 或 <bulabula /> //符合 xml 语法结构要求
在布局文件中的标签属性中的“android:”是什么?
- 标签属性中 android 为 android 的命名空间
即是 xmlns:android=“http://schemas.android.com/apk/res/android” (改)
线性布局是什么意思?它的标签名是什么?
- 使用单个水平行或垂直行来组织子项的布局,其中控件按先后顺序排列
- LinearLayout
android:orientation 这个属性是什么意思?它可取哪些值?
- 设置线性布局的方向
- horizontal、vertical,水平、垂直方向
android:layout_width 和 android:layout_height这两个属性是什么意思?它可取什么值?值的含义是什么?
- 指定 view 控件的宽度和高度
- 1.具体的数值
2.match_parent,该 view 同它的父 view 相同大小(减去父view的padding)
3.wrap_content,刚好可以包含它的内容大小(加上该view的padding)
TextView 这个标签是什么?
- 用于盛放用户不可改其文字内容的控件 (改)
EditText 这个标签是什么?它同 TextView 什么区别?它的 android:hint 属性是什么意思?
- 用于盛放用户可输入文字的控件 (改)
- TextView 是不可编辑的
- 当文本域为空的时候,缺省显示的提示信息
Button 这个标签是什么?它的 android:text 属性什么作用?
- 按钮
- 设置按钮上的文本
所有的标签都可以有 android:id 这个属性,该属性是什么含义,一般如何定义它的值?id 的值在哪个 java 文件中定义的?
- 该属性定义了该 view 的唯一的标识符,通过该 id 在程序中引用该对象
android:id="@+id/资源名"
id中最好含有它的类别及能够表达它的含义的英文单词- 编译 app 时,SDK 工具使用 ID 名在 gen/R.java 文件中创建一个新的资源 ID 来引用 EditText 元素
string.xml 文件是什么文件?它的文件结构是什么样的?什么是键值对?
- 字符串资源文件
,键值对形式value - Key-Value,每个键对应一个值,通过 Key 寻找 Value
对值的使用可以基由键来引用 (改)
android:weight 属性什么作用?如何让 EditText 充满一行中的剩余空间?
- 设置权重
- 单独给 EditText 设置
android:layout_weight= "1"
R.java这个文件里都有什么?这个文件能手工修改吗?
- R.java为系统自动生成并管理的java文件,它里面定义了一些内嵌的类
内嵌类中定义了一些常量,这些常量用于代表系统中用到的资源
在编程时,需要使用这些资源的话,我们就引用该类中的常量 - 这个文件程序员是不能介入修改的
主题和样式
什么是样式?主题是什么?同样式什么联系?
- 样式,反映 view 或者 window 的外观和格式的属性集合
- 主题,是应用于整个 Activity 或 app 的样式,而不是针对某个 View
- 主题就是把样式应用于所有 view,包括非视图元素
样式文件存放在哪里?结构是怎样的?怎么在布局文件中引用样式?
- res > values > styles
所有的有关样式的定义可以从布局文件中取出,放到 XML 样式定义文件中 - 根节点必须是
,其中每个样式 (style) 由 name 唯一标识,
<resources> <style name="CodeFont" parent="TextAppearance.AppCompat"> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#00FF00</item> </style></resources>
- 例,样式定义文件命名为CodeFont,在布局文件的TextView控件中引用
<TextView style="@style/CodeFont" />
样式的继承是什么?如何继承系统样式?如何继承自定义样式?
- 字面意思就是继承上级的属性,这里指对所继承样式的扩展
- 自定义 GreenText 继承系统样式
从支持库继承核心应用样式,
相应的parent="TextAppearance.AppCompat"
支持库样式通常具有与平台样式相似的名称,但包含一个 AppCompat - 继承自定义样式 GreenText,
如果某个样式应用到某个 view 的时候,而这个样式中有 View 不能支持的属性,会怎么样?
- 会被忽略,只对支持的属性起作用
怎么设置样式?如果将样式设置到 ViewGroup 时,该 group 中的 view 会使用该样式吗?
style="@style/CodeFont"
- 不会
如何设置主题?如何微调已有主题?
- 在清单文件中的
标签或
标签上应用
<application android:theme="@style/Theme.AppCompat" ... >
- 自定义主题,最好的方法是从支持库扩展这些样式并覆盖某些属性
继承已有主题,通过扩展覆盖微调
<style name="AppTheme" parent="BaseAppTheme" />
链接 Android UI 开发_问答_3.
更多相关文章
- Android之布局属性
- Android之ListView中的分割线
- Android(安卓)入门 和 环境搭建
- Android(安卓)studio教程学习笔记4——TextView
- Android中/system/build.prop文件解读
- Android(安卓)入门 和 环境搭建
- TextView中ellipsize属性焦点异常处理
- Android控件属性大全
- Android(安卓)XML解析