目录
1.RelativeLayout实现计算器的另一种用法
用传统的RelativeLayout实现会出现行尾留出大量的空白。使一行填满有下面两种方法:
<!-- 使一行填满的方法 -->
<!-- 1.自定义大小进行填充 -->
<!-- 2.以中心点为参照 左右展开 -->
<!-- 参照点,不占用宽度 水平垂直或centerParent-->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
tool:context=".MainActivity">
<!-- 参照点,不占用宽度 水平垂直或centerParent-->
<Button
android:id="@+id/bt10"
android:layout_width="0sp"
android:layout_height="0sp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true">
</Button>
<Button
android:id="@+id/bt11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/bt10"
android:layout_alignBottom="@+id/bt10"
android:text="8"
android:textSize="30sp">
</Button>
<Button
android:id="@+id/bt12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignBottom="@id/bt11"
android:layout_toLeftOf="@id/bt11"
android:text="7"
android:textSize="30sp">
</Button>
<Button
android:id="@+id/bt13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/bt10"
android:layout_alignBottom="@id/bt10"
android:text="9"
android:textSize="30sp">
</Button>
<Button
android:id="@+id/bt14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/bt13"
android:layout_alignBottom="@id/bt23"
android:layout_alignTop="@id/bt13"
android:text="-"
android:textSize="30sp">
</Button>
<!-- 使一行填满的方法 -->
<!-- 1.自定义大小进行填充 -->
<!-- 2.以中心点为参照 左右展开 -->
<Button
android:id="@+id/bt21"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/bt12"
android:layout_alignLeft="@id/bt12"
android:text="1"
android:textSize="30sp">
</Button>
<Button
android:id="@+id/bt22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/bt21"
android:layout_alignTop="@id/bt21"
android:text="2"
android:textSize="30sp">
</Button>
<Button
android:id="@+id/bt23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/bt22"
android:layout_toRightOf="@id/bt22"
android:text="3"
android:textSize="30sp">
</Button>
<EditText
android:layout_width="wrap_content"
android:layout_height="100sp"
android:layout_above="@id/bt12"
android:layout_alignRight="@id/bt14"
android:layout_alignLeft="@id/bt12"
android:gravity="right|center_vertical"
android:text="24242"
android:textSize="50sp">
</EditText>
</RelativeLayout>
2.表格布局(TableLayout)
该布局中的行由TableRow表示,有多少TableRow就有多少行,表列的个数由包含最多子元素的TableRow所决定。列的宽度也由最大元素决定。 比如,有两行,第一行有两个元素,第二行有三个元素,则表列的个数为3。
TableRow不需要设置宽度和高度,它的宽度一定是match_parent,它的高度一定是wrap_content,它其中的控件的宽度和高度均为wrap_content。
TableRow中的控件在哪一列由android:layout_column指定,该值从0开始,也可以一个元素跨多列,由android:layout_span指定跨列的个数。 只能跨列不能跨行。
属性名 | 描述 |
---|---|
android:collapseColumns | 指定列折叠起来,在界面上看不到该列 |
android:shrinkColumns | 当本列的定义总长度超出屏幕宽度时,指定列缩减跨度以适应屏幕 |
android:stretchColumns | 当本列的定义总长度不足屏幕宽度时,指定列拉伸以充满屏幕 |
<?xml version="1.0" encoding="utf-8"?>
<!-- 控件在哪个地方,第几个单元格 -->
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:stretchColumns="0,3"
tool:context=".MainActivity">
<!-- android:stretchColumns="*" *:表示所有都可以被拉伸;也可以指定特定列被拉伸。 拉伸可以利用剩余空间 -->
<!-- 编号从0 开始-->
<!-- android:collapseColumns="2" 可隐藏的 -->
<TableRow>
<!-- 空的控件-->
<TextView
android:layout_width="wrap_content">
</TextView>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="姓名: "
android:textSize="30sp"
android:background="#ffffff">
</Button>
<EditText
android:layout_width="250sp"
android:layout_height="wrap_content">
</EditText>
<TextView
android:layout_width="wrap_content">
</TextView>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content">
</TextView>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="学号: "
android:textSize="30sp"
android:background="#ffffff">
</Button>
<EditText
android:layout_width="250sp"
android:layout_height="wrap_content">
</EditText>
<TextView
android:layout_width="wrap_content">
</TextView>
</TableRow>
<!-- 列的宽度由最大的决定 -->
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_weight="1">
</TextView>
<Button
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_width="0sp"
android:text="修 改"
android:textSize="30sp">
</Button>
<Button
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_width="0sp"
android:text="确 定"
android:textSize="30sp">
</Button>
<TextView
android:layout_weight="1"
android:layout_width="wrap_content">
</TextView>
</TableRow>
</TableLayout>