2015-05-21 96 views
0

我創建了一個Settings屏幕,一個帶有TableLayout的ScrollView。我不希望我的設置TableRows出現擠壓,所以我將每個設置爲8dp的邊距。但是,這意味着內部的內容似乎會流血(特別是在右側)。使用TableLayout邊距,TableRows流血

看起來好像表格的寬度不會排除它自己的邊距寬度,當他們嘗試爲自己的寬度填充fill_parent時,它會弄亂內容的寬度。我該如何解決?

一個形象的例子 - 見右側的複選框: screenshot of android emulator

我的佈局XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/settings"> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <TableLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:stretchColumns="0"> 

      <TableRow android:layout_margin="@dimen/row_padding"> 
       <TextView 
        android:text="Settings" 
        android:gravity="center" 
        android:textAppearance="?android:attr/textAppearanceLarge"/> 
      </TableRow> 

      <TableRow android:layout_margin="0dp"> 

       <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="@dimen/row_height"> 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:attr/textAppearanceLarge" 
         android:text="No margin" 
         android:id="@+id/textView" /> 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:attr/textAppearanceSmall" 
         android:text="Explanation" 
         android:id="@+id/textView2" /> 
       </LinearLayout> 

       <CheckBox 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/checkBox" 
        android:layout_gravity="center" /> 
      </TableRow> 

      <TableRow android:layout_margin="@dimen/row_padding"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:text="8dp margin" 
        android:id="@+id/textView3" /> 

       <CheckBox 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/checkBox2" 
        android:layout_column="1" 
        android:checked="false" /> 
      </TableRow> 

     </TableLayout> 

    </ScrollView> 

</LinearLayout> 

回答

0

而不是把保證金直接在TableRow標籤上的內容,即你可以添加保證金錶單元格,

我修改了你的代碼。請看看。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/settings"> 

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:stretchColumns="0"> 

     <TableRow > 
      <TextView 
       android:text="Settings" 
       android:gravity="center" 
       android:textAppearance="?android:attr/textAppearanceLarge"/> 
     </TableRow> 

     <TableRow android:layout_margin="0dp"> 

      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       > 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:text="No margin" 
        android:id="@+id/textView" /> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:text="Explanation" 
        android:id="@+id/textView2" /> 
      </LinearLayout> 

      <CheckBox 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/checkBox" 
       android:layout_gravity="center" /> 
     </TableRow> 

     <TableRow> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="8dp margin" 
       android:layout_margin="8dip" 
       android:id="@+id/textView3" /> 

      <CheckBox 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/checkBox2" 
       android:layout_margin="8dip" 
       android:layout_column="1" 
       android:checked="false" /> 
     </TableRow> 

    </TableLayout> 

</ScrollView> 

希望它會幫助你!

+0

謝謝,該解決方案的作品。我描述的行爲是否是預期的?對我來說似乎有點不尋常。 – Crummy