2012-02-01 73 views
1

我具有以下UI層次結構UI控件寬度

滾動查看 - > TableLayout - >行[各行具有的TextView +的EditText]

問題 內一排中,每個視圖應該不超過父級寬度的50%(TableRow)。如果創建EditText來輸入,請說出用戶名,最大字符數爲N;那麼EditText的寬度理想情況下應該是N個字符長,但不能超過50%的限制。

我已經嘗試了許多排列組合,並且迄今爲止無法完成。

我必須按照項目要求編程。

感謝。

+0

顯示您在這裏的代碼。所以任何人都可以幫助你 – 2012-02-01 05:54:07

+0

如果你想限制字符,你可以使用android:maxLength =「10」 – 2012-02-01 05:58:37

+0

@AndroidTechMe我的代碼是'問'的建議。 – iuq 2012-02-01 07:11:54

回答

0

爲了成爲我自己的佈局,我不得不放棄TableLayout。 TableRows中的佈局參數似乎無效。 LinearLayout看起來更加靈活。

現在我有以下佈局層次結構,它的工作原理。

滾動查看 - >的LinearLayout代替TableLayout - > [在LinearLayout中,而不是TableRows encapuslated各個字段]

0

嘗試使用佈局權重是這樣的:

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

    <TextView 
     android:id="@+id/textview1" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"> 
    </TextView> 

    <EditText 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 
    </EditText> 

</TableRow> 

要做到這一點編程,嘗試使用的LayoutParams來完成相同的是這樣的:

TableLayout table = (TableLayout) findViewById(R.id.TableLayout1); 

TableRow tr = new TableRow(this); 
TableLayout.LayoutParams trparams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT); 
tr.setLayoutParams(trparams); 

textview1 = new TextView(this); 
edittext1 = new EditText(this); 

TableRow.LayoutParams fieldparams = new TableRow.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); 
tr.addView(textview1, fieldparams); 
tr.addView(edittext1, fieldparams); 

table.addView(tr); 
+0

謝謝。嘗試了這一點,但它將視圖的寬度固定爲每個50%。但是,如果在EditText中只輸入5個字符,那麼它應該是5個字符長。在這種情況下,50%的空間太長,看起來不太好。 – iuq 2012-02-01 06:38:20

0

我看到您的評論問的answers.i認爲您可以將edittext或textview的寬度設置爲包裝內容,並將這些控件的最大寬度屬性設置爲屏幕的50%,然後寬度不會超過父寬度的50%。

+0

無法正常工作。你嘗試過嗎? setXXXWidth方法似乎無效。 – iuq 2012-02-01 14:00:55