我很难理解布局教程。我无法在不同的行上对齐列。例如,3dip在android中意味着什么:padding =“3dip”。文档说“可用单位是:px(像素),dp(与密度无关的像素),sp(基于首选字体大小的缩放像素),以(英寸),毫米(毫米)为单位。”。
具体来说,我想创建一个顶部和底部两行的布局,中间是列表。我希望底行坚持到底部。如,
我当前的xml看起来很丑陋(没有中间列表)
<?xml version="1.0" encoding="utf-8"?>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:gravity="center_horizontal"
android:text="title 1"
/>
<TextView
android:layout_width="wrap_content"
android:gravity="center_horizontal"
android:text="title 2"
/>
<TextView
android:layout_width="wrap_content"
android:gravity="center_horizontal"
android:text="title 3"
/>
</TableRow>
<View android:layout_height="2dip"
android:background="#FF909090" />
<TableRow>
<TextView
android:layout_width="wrap_content"
android:gravity="center_horizontal"
android:text="bottom 1"
/>
<TextView
android:layout_width="wrap_content"
android:gravity="center_horizontal"
android:text="bottom 2"
/>
</TableRow>
答案 0 :(得分:4)
TableLayout并不是您真正需要的。 TableLayout为您提供类似于Excel的行,其中包含行和列。
此外,dip与dp相同。
可能的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/TopRow"
android:layout_width="fill_parent"
android:orientation="horizontal">
<TextView
android:text="@+id/TextView01"
android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1" />
<TextView
android:text="@+id/TextView01"
android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1" />
<TextView
android:text="@+id/TextView01"
android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:id="@+id/Middle"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1"
android:orientation="vertical">
<ListView
android:id="@+id/ListView01"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="fill_parent" />
<ListView
android:id="@+id/ListView02"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="horizontal"
android:id="@+id/BottomRow">
<TextView
android:text="@+id/TextView01"
android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1" />
<TextView
android:text="@+id/TextView01"
android:id="@+id/TextView01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
你的答案不能很好地发挥作用,我希望人们不要发布错误的答案。这是您可以使用的一个提示。使用merge标记与父项合并,因为父布局最有可能是在FrameLayout模式下。在Linearlayout(前两行)中包裹一个部分,然后最后一行将默认为parent。然后使用android:layout_gravity =“bottom”属性。有关详细信息,请参阅layout example。
以下是我的一个示例,其中包含3个文本视图和2个搜索栏,我希望最后一个文本在底部进行布局。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_width="fill_parent"
android:orientation="vertical">
<TextView
android:layout_height="wrap_content"
android:autoText="false"
android:text="@string/color_font_text"
android:id="@+id/color_font_text"
android:layout_width="fill_parent"
android:textSize="20px"
android:textColor="#FF999999"
android:textStyle="bold"
android:gravity="center_horizontal"></TextView>
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:id="@+id/seekbar_font"
android:max="100"
android:progress="50"></SeekBar>
<TextView
android:layout_height="wrap_content"
android:autoText="false"
android:text="@string/color_background"
android:id="@+id/color_background"
android:layout_width="fill_parent"
android:textSize="20px"
android:textColor="#FF999999"
android:textStyle="bold"
android:gravity="center_horizontal"></TextView>
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/seekbar_back"
android:max="100"
android:progress="50" android:layout_margin="10px"></SeekBar>
</LinearLayout>
<TextView
android:id="@+id/color_example"
android:text="CURRENT COLOR"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20px"
android:layout_gravity="bottom"
android:gravity="center_horizontal"/>
</merge>
答案 2 :(得分:0)
另一种方法是使用与LinearLayout混合的RelativeLayout。在相对部分中,您使用android:layout_below =“@ id / color_font_text”引用上一个小部件。这将放置第二个小部件,第一个TextView下面的SeekBar。希望这有帮助!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/color_font_text"
android:text="@string/color_font_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20px"
android:textColor="#FF999999"
android:textStyle="bold"
android:gravity="center_horizontal"></TextView>
<SeekBar
android:id="@+id/seekbar_font"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:layout_below="@id/color_font_text"
android:max="100"
android:progress="50"></SeekBar>
<TextView
android:id="@+id/color_background"
android:text="@string/color_background"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/seekbar_font"
android:textSize="20px"
android:textColor="#FF999999"
android:textStyle="bold"
android:gravity="center_horizontal"></TextView>
<SeekBar
android:id="@+id/seekbar_back"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/color_background"
android:max="100"
android:progress="50"
android:layout_margin="10px"></SeekBar>
<TextView
android:id="@+id/color_example"
android:text="CURRENT COLOR"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/seekbar_back"
android:textSize="20px"
android:gravity="center_horizontal|center_horizontal"
android:layout_centerInParent="true"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center">
<Button
android:text="@string/color_button_save"
android:id="@+id/color_button_save"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:text="@string/color_button_cancel"
android:id="@+id/color_button_cancel"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>