android 常用控件的使用方式
@author lisiwen
@createTIme 2022/04/07
文章中的测试用例链接:https://github.com/NET-lisiwen/UIWidgetTest/tree/master
1.TextView
TextVIew可以说是使用起来比较简单的一个控件,这里在介绍使用TextView方法的同时,也会将一些简单的资源引用方法,这里也是使用自动创建一个empyt activity然后修改activity_main.xml
中的代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/Text_View_String">
</TextView>
</LinearLayout>
strings.xml
<resources>
<string name="app_name">UIWidgetTest</string>
<string name="Text_View_String">this is text view</string>
</resources>
外边的LinearLayout先不看,这个是一种基本布局方式,后边会讲,在TextView中使用android:id
给当前控件定义了一个唯一标识符,@+id表示新增一个id,若@id则是表示引用一个现有的一个id为xxx的资源,所以说定义唯一标识符可以有两种方式,一种为使用@+id/textview 此时定义的唯一标识符为textview,另一种方式为在res\values\ids.xml
文件中定义一个id
<resources>
<item type="id" name="text_view"/>
</resources>
并且在activity_main.xml
修改id的定义方式为 android:id="@id/text_view"
,此时会自动引用ids.xml文件中名字为text_view对应的值 ,这时如果没有对应的值编译是会报错的, 此种使用方式和@+id/textview 效果相同。
然后使用android:layout_width
和android:layout_height
定义了当前控件的高度和宽度。Android中所有的控件都具有这两个属性,可选值有3中:match_parent、wrap_content和固定值。match_parent表示当前空间的大小和父布局的大小一致,也就是由父布局来决定当前控件的大小。wrap_content表示让当前控件的大小能够刚好包含住里边的内容,也就是由控件内容决定当前控件的大小。固定值表示给控件指定一个固定的尺寸,单位一般使用dp,这是一种屏幕密度无关的储存单位,可以保证在不同分辨率的手机上显示效果尽可能地一致,就比如50dp就是一个有效的固定值。最后android:text就是当前控件的显示的字串的内容,此处就是引用的Strings.xml中name为Text_View_String的对应的内容,也就是this is text view
,此种使用方式和android:text="this is text view"
效果一致。
所以说上边的代码就表示让TextView的宽度和父布局一样宽,也就是手机屏幕的宽度,让TextView的高度足够包含住里边的内容就行。现在运行程序,效果如图所示
这里文本是正常显示出来了,但是这里好像是看不出来TextView的宽度和手机宽度是一致的,这里是因为TextView默认是左对齐的,这里可以更改一下TextView的对齐方式
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/Text_View_String">
</TextView>
</LinearLayout>
可以看到第八行加了一个android:gravity属性,这个属性就是用来指定文字的对齐方式,可选的值有top、bottom、start、end、center等,可以使用”|“来同时指定多个值,这里我们使用的是”center“,效果同等与”center_horizontal|center_vertical“,表示文字在水平和垂直方向都居中对齐,现在可以重新运行程序看一下
可以看到目前字是屏幕居中对齐,也说明了TextVIew的宽度确实和屏幕宽度是一致的。
另外我们也可以对TextView中文字的颜色和大小进行修改,如下所示
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textview"
android:layout_width="match_parent