常见布局
如何在MainActivity.java中设置activity的布局文件
- 在 onCreate 回调方法中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(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,修改后面的数字
水平居中和垂直居中的属性是什么?
- centerVertical 和 centerHorizontal
线性布局
如何新建布局文件?布局文件的文件名有什么要求?
- layout 右击,New > Layout Resource File
或 File > New > XML > Layout XML File - 后缀
.xml
线性布局中子控件的对齐是哪个属性?可取什么值?
android:layout_gravity
,表示相对于父视图组中的对齐方式- 上下左右居中对齐
线性布局的方向由哪个属性决定?可取什么值?默认值是什么?
android:orientation
- horizontal、vertical,水平、垂直方向
- horizontal,默认水平方向
控件的id可以相同吗?
- 不可以
线性布局能嵌套使用吗?怎么用?
- 能嵌套使用
<LinearLayout>
<LinearLayout> ...
</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_span
指定跨列的个数- 不能跨行
网格布局
如何修改子控件上的文字及id?几种方式?
- 直接更改
android:text
属性的值 - 切换到可视化界面,双击更改
如何跨列?需要哪两个属性配合?怎么配合?
android:layout_columnSpan
和android:layout_gravity
android:layout_gravity = "fill"
如何跨行?
android:layout_rowSpan
如何设置总列数?
android:columnCount
子控件的位置是怎么确定的?
- 通过
android:layout_column
和android:layout_row
确定子控件位置
一个简单的UI
View是什么?ViewGroup是什么?他们之间什么关系?
- View 是用于创建用户交互组件的小部件的基类,是一块矩形区域
- ViewGroup 对象是一种不可见的容器,布局的基类
- ViewGroup 继承自 View
布局文件中哪里找到?布局文件中的标签是怎样的结构?
- res > layout
<bulabula>...</bulabula> 或 <bulabula />
在布局文件中的标签属性中的“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/资源名"
- 编译app时,SDK工具使用ID名在gen/R.java文件中创建一个新的资源ID来引用EditText元素
string.xml文件是什么文件?它的文件结构是什么样的?什么是键值对?
- 字符串资源文件
<string name="...">value</string>
- Key-Value,每个键对应一个值,通过 Key 寻找 Value
android:weight属性什么作用?如何让EditText充满一行中的剩余空间?
- 设置权重
- 单独给 EditText 设置
android:layout_weight= "1"
主题和样式
什么是样式?主题是什么?同样式什么联系?
- 样式,反映view或者window的外观和格式的属性集合,用于指定某个View外观
- 主题,是应用于整个Activity或app的样式,而不是针对某个View
- 主题就是把样式应用于所有view,包括非视图元素
样式文件存放在哪里?结构是怎样的?怎么在布局文件中引用样式?
- res > values > styles
所有的有关样式的定义可以从布局文件中取出,放到XML样式定义文件中 - 根节点必须是
<resource>
,其中每个样式 (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" />
样式的继承是什么?如何继承系统样式?如何继承自定义样式?如果某个样式应用到某个view的时候,而这个样式中有View不能支持的属性,会怎么样?
- 字面意思就是继承上级的属性,这里指对所继承样式的扩展
- 自定义GreenText继承系统样式
<style name="GreenText" parent="@android:style/TextAppearance">
从支持库继承核心应用样式,
相应的parent="TextAppearance.AppCompat"
支持库样式通常具有与平台样式相似的名称,但包含一个AppCompat - 继承自定义样式GreenText,
<style name="GreenText.Large">
- 会被忽略,只对支持的属性起作用
怎么设置样式?如果将样式设置到ViewGroup时,该group中的view会使用该样式吗?
style="@style/CodeFont"
- 不会
如何设置主题?如何微调已有主题?
- 在清单文件中的
<application>
标签或<activity>
标签上应用
<application android:theme="@style/Theme.AppCompat" ... >
- 自定义主题,最好的方法是从支持库扩展这些样式并覆盖某些属性
继承已有主题,通过扩展覆盖微调
<style name="AppTheme" parent="BaseAppTheme" />
End.