2013-03-01 29 views
0

我有一個TableLayout來顯示一些數據。每行有兩列:第一列有字段名,第二列有字段值。如果有任何字段被點擊,我會顯示一個EditText。我用ViewSwitcher來做。Android:EditText中太多字符移動我的視圖(TableLayout with ViewSwitchers)

TextView/EditText只有幾個字符的視圖是好的,但如果第一行是滿的第一列(字段名稱)變得更窄,第二列變寬。我不希望發生這種情況,我希望我的列總是相同的大小。

這是我的佈局:

<TableLayout 
    android:id="@+id/formLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/textLicense" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/license" 
      android:textSize="18sp" 
      android:textStyle="bold" /> 

     <ViewSwitcher 
      android:id="@+id/licenseSwitcher" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="3" > 

      <TextView 
       android:id="@+id/tvLicenseVariable" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:clickable="true" 
       android:onClick="LicenseViewClicked" 
       android:textSize="18sp" /> 

      <com.timeondriver.petrolcontrol.MySpinner 
       android:id="@+id/spinnerLicense" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:prompt="@string/license_prompt" /> 
     </ViewSwitcher> 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/textDate" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/date" 
      android:textSize="18sp" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/tvDateVariable" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="3" 
      android:clickable="true" 
      android:onClick="DateViewClicked" 
      android:textSize="18sp" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp"> 

     <TextView 
      android:id="@+id/textPlace" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="@string/place" 
      android:textSize="18sp" 
      android:textStyle="bold" /> 

     <ViewSwitcher 
      android:id="@+id/placeSwitcher" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="3" > 

      <TextView 
       android:id="@+id/tvPlaceVariable" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:clickable="true" 
       android:onClick="PlaceViewClicked" 
       android:textSize="18sp" /> 

      <EditText 
        android:id="@+id/editTextPlace" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
       android:imeOptions="actionDone" 
      android:maxLines="3" 
        android:inputType="textMultiLine" 
        /> 
     </ViewSwitcher> 
    </TableRow> 
</TableLayout> 

這是視圖的外觀時,地方數據很短,如:

enter image description here

這是該視圖時像的地方數據有太多字符(第一行全):

enter image description here

許可證,日期和時間行不是問題,因爲它們的大小是有限的。帶有位置數據的行是字符數過多時更改列寬的行。我如何在列中始終保持相同的寬度?

謝謝!

回答

2

我想問題是你指定了layout_width和layout_weight。如果你沒有輸入足夠的文本,那麼指定的layout_width似乎就是wrap_content。如果您輸入的文本足夠多,您將達到的寬度將大於指定的layout_weight,因此此時layout_weight屬性將會計數。要始終具有相同大小的柱面,請嘗試將layout_width設置爲0dpi,以便僅使用layout_weight屬性。那麼你必須在兩列之間指定一個不同的比率,因爲它似乎1/4到3/4似乎不適合左列中的文本。也許你應該選擇類似2/5到3/5的東西,這意味着左欄的layout_weight = 2和右欄的3。

+0

使用layout_width =「0dip」工作!非常感謝! :d – 2013-03-01 11:28:00