我平时常用的布局为LinearLayout,RelativeLayout,Framelayout。很少使用TableLayout。感觉TableLayout写登录界面不错。
下面是xml文件:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:padding="10dp"
android:stretchColumns="1">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="30dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入用户名" />
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:"
android:textSize="30dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword" />
</TableRow>
<TableRow>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span="2"
android:text="登录" />
</TableRow>
</TableLayout>
在 TableLayout 中每加入一个 TableRow 就表示在表格中添加了一行,然后在 TableRow中每加入一个控件,就表示在该行中加入了一列,TableRow 中的控件是不能指定宽度的。这里我们将表格设计成了三行两列的格式,第一行有一个 TextView 和一个用于输入账号的EditText,第二行也有一个 TextView 和一个用于输入密码的 EditText,我们通过将android:inputType属性的值指定为 textPassword,把 EditText 变为密码输入框。可是第三行只有一个用于登录的按钮,前两行都有两列,第三行只有一列,这样的表格就会很难看,而且结构也非常不合理。这时就需要通过对单元格进行合并来解决这个问题,使用android:layout_span=”2”让登录按钮占据两列的空间,就可以保证表格结构的合理性了。
这里将 android:stretchColumns 的值指定为 1,表示如果表格不能完全占满屏幕宽度,就将第二列进行拉伸