1

我很难理解布局教程。我无法对齐不同行上的列。例如 android:padding="3dip" 中的 3dip 是什么意思。文档说“可用单位有:px(像素)、dp(与密度无关的像素)、sp(基于首选字体大小的缩放像素)、in(英寸)、mm(毫米)。”。

具体来说,我想创建一个上下两行的布局,中间是列表。我希望底行粘在底部。例如,


标题1 | 标题2| 标题3|

清单 1

清单 2

底部 1 | 底部 2 |

我当前的 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>

4

4 回答 4

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>
于 2010-01-20T18:57:23.437 回答
1

RelativeLayout 允许您使用属性 layout_alignParentBottom="true" 或 layout_alignParentTop="true" 告诉视图粘在底部或顶部。有关 RelativeLayout 的更多信息,请参阅常见布局

于 2010-01-20T19:49:14.467 回答
0

另一种方法是使用 RelativeLayout 与 LinearLayout 混合。例如,在相对部分中,您使用 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>
于 2010-12-03T05:27:44.450 回答
0

您的答案效果不佳,我希望人们停止发布错误的答案。这是您可以使用的一个提示。使用合并标签与父级合并,因为无论如何父级布局很可能处于 FrameLayout 模式。在 Linearlayout 中包裹一个部分(您的前两行),然后最后一行离开将默认为父级。然后使用 android:layout_gravity="bottom" 属性。有关详细信息,请参阅布局示例

这是我的一个例子,有 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>
于 2010-12-03T00:32:42.323 回答