Android TableLayout引力和填充问题

时间:2012-05-27 17:50:57

标签: android xml tablelayout gravity

好吧,所以我目前正在使用TableLayout进行活动的布局,并且在我想要的地方找到该死的表并没有真正做到这一点。

以下是现在的截图: enter image description here

目前我有三个目标:

  1. 让包含EditText和ToggleButton的LinearLayout在屏幕上水平居中(暂时还没有这样做)

  2. 将表格布局(其中包含三角形的6个按钮)水平居中于LL 下方而不会将其分解为3个LinearLayouts

  3. 除了边距和填充之外,不使用绝对值,使所有按钮都具有相同的大小。
  4. 任何关于如何完成上述任何或所有目标的见解都会受到赞赏,因为我基本上已经耗尽了我自己的xml布局知识,并且宁愿避免以编程方式进行,我通常在这种情况下做的事情

    作为参考,这里是上面看到的当前布局的xml(xml版本行 那里,但它只是不想在这篇文章中正确复制):

    <com.hinodesoftworks.lordkat.widgets.TitleBar
        android:id="@+id/calc_titlebar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    
    <TextView
        android:id="@+id/calc_input_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" >
    
        <EditText
            android:id="@+id/calc_input"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/txt_trig_hint" />
    
        <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="@drawable/button_selector"
            android:paddingBottom="5dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="5dp"
            android:textOff="@string/txt_trig_toggle_radians"
            android:textOn="@string/txt_trig_toggle_degrees" />
    </LinearLayout>
    
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:weightSum="3" >
    
        <TableRow
            android:layout_gravity="center_horizontal"
            android:layout_weight="1" >
    
            <Button
                android:id="@+id/trig_sine_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="2dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="1dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/button_selector"
                android:paddingBottom="10dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="10dp"
                android:text="@string/txt_trig_sine_button" />
    
            <Button
                android:id="@+id/trig_secant_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="2dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="1dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/button_selector"
                android:paddingBottom="10dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="10dp"
                android:text="@string/txt_trig_secant_button" />
        </TableRow>
    
        <TableRow
            android:layout_gravity="center_horizontal"
            android:layout_weight="1" >
    
            <Button
                android:id="@+id/trig_cosine_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="2dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="1dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/button_selector"
                android:paddingBottom="10dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="10dp"
                android:text="@string/txt_trig_cosine_button" />
    
            <Button
                android:id="@+id/trig_cosecant_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="2dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="1dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/button_selector"
                android:paddingBottom="10dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="10dp"
                android:text="@string/txt_trig_cosecant_button" />
        </TableRow>
    
        <TableRow
            android:layout_gravity="center_horizontal"
            android:layout_weight="1" >
    
            <Button
                android:id="@+id/trig_tangent_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="2dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="1dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/button_selector"
                android:paddingBottom="10dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="10dp"
                android:text="@string/txt_trig_tangent_button" />
    
            <Button
                android:id="@+id/trig_cotangent_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="2dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="1dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/button_selector"
                android:paddingBottom="10dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="10dp"
                android:text="@string/txt_trig_cotangent_button" />
        </TableRow>
    </TableLayout>
    
    <TextView
        android:id="@+id/calc_results_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/txt_trig_results_label" />
    
    <TextView
        android:id="@+id/calc_results"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="123.456" />
    
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    

2 个答案:

答案 0 :(得分:1)

1-)要使EditText和ToggleButton在屏幕中水平居中,请使用 机器人:重力= “CENTER_HORIZONTAL”
而不是“android:layout_gravity =”center_horizo​​ntal“

2-)如答案(1)所示,在表中水平居中,请使用 “android:gravity =”center_horizo​​ntal“

3-)要使所有按钮都具有相同的大小而不使用边距和填充之外的绝对值,请使用“android:stretchColumns =”0,1“”来拉伸列0和1。 使用此属性时,不必使用绝对值。因此得到的代码如下:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:stretchColumns="0,1"
   >

<TableRow>
    <Button
        android:id="@+id/trig_sine_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_launcher"
        android:text="txt_trig_sine_button" />
    <Button
        android:id="@+id/trig_secant_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_launcher"
        android:text="txt_trig_secant_button" />
</TableRow>

...

答案 1 :(得分:0)

尝试使用GridLayout,它的内存效率更高,没有嵌套容器,非常适合这种类似网格的设计。