【Android】Android UI 开发_问答_2

常见布局

如何在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_widthandroid:layout_height

  • TableRow不需要设置宽度和高度,
    它的宽度一定是match_parent,高度一定是wrap_content,
    它其中的控件的宽度和高度均为wrap_content

如何确定子控件所在的列?

  • android:layout_column指定列数,从0开始
    表格布局中,行中每列不会叠加,同列会后移

stretchColumns属性什么意思?

  • 当本列的定义总长度不足屏幕宽度时,指定列拉伸以充满屏幕

子控件如何跨列?能跨行吗?

  • android:layout_span指定跨列的个数
  • 不能跨行

网格布局

如何修改子控件上的文字及id?几种方式?

  • 直接更改 android:text 属性的值
  • 切换到可视化界面,双击更改

如何跨列?需要哪两个属性配合?怎么配合?

  • android:layout_columnSpanandroid:layout_gravity
android:layout_gravity = "fill"

如何跨行?

android:layout_rowSpan

如何设置总列数?

android:columnCount

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

  • 通过android:layout_columnandroid: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.

发布了81 篇原创文章 · 获赞 171 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43763494/article/details/105127675