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_widthandroid: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_columnSpanandroid:layout_gravity
android:layout_gravity = "fill"

如何跨行?

android:layout_rowSpanandroid:layout_gravity = "fill"

如何设置总列数?

  • android:columnCount

子控件的位置是怎么确定的?

  • 通过android:layout_columnandroid: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 继承系统样式