2012-07-22 52 views
9

我已經編寫了一個XML代碼,我希望EditText被擴展爲適合父寬度。花了這麼多時間之後,我找不到擴展EditText的方法。爲什麼EditText沒有擴展到fill_parent

這裏是我的XML:

<?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"> 

    <TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip">   
     <TextView 
      android:text="Comment" 
      android:layout_width="match_parent" 
      android:textStyle="bold" 
      android:padding="3dip" />  
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip">   
     <EditText 
      android:id="@+id/EditText02" 
      android:layout_height="wrap_content" 
      android:lines="5" 
      android:gravity="top|left" 
      android:inputType="textMultiLine" 
      android:scrollHorizontally="false" 
      android:minWidth="10.0dip" 
      android:maxWidth="5.0dip"/> 
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip" 
     android:gravity="center">   
     <Button 
      android:id="@+id/cancel" 
      android:text="Next" />  
    </TableRow> 
</TableLayout> 
</LinearLayout> 

什麼我做了什麼錯在這裏。請幫幫我。

回答

2

在每行中添加一個額外的TextView的colomn。

此代碼可能對您有所幫助。

<?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"> 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1" 
    android:orientation="vertical"> 

    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip"> 

     <TextView android:text="" />  

     <TextView 
      android:text="Comment" 
      android:layout_width="match_parent" 
      android:layout_marginRight="10dp" 
      android:textStyle="bold" 
      android:padding="3dip" />  
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip"> 

     <TextView android:text="" />   

     <EditText 
      android:id="@+id/EditText02" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="20dp" 
      android:lines="5" 
      android:gravity="top|left" 
      android:inputType="textMultiLine" 
      android:scrollHorizontally="false" /> 
    </TableRow> 

    <TableRow 
     android:layout_marginLeft="10dp" 
     android:layout_marginBottom="15dip" 
     android:gravity="center"> 

     <TextView android:text="" />   

     <Button 
      android:id="@+id/cancel" 
      android:layout_marginRight="10dp" 
      android:text="Next" />  
    </TableRow> 
</TableLayout> 
</LinearLayout> 
1

不確定是否嚴重。

你有你的EditText的最小寬度(minWidth)設置爲大於它的最大寬度(maxWidth),而你沒有給它一個layout_width屬性(你應該設置爲match_parent)。

+0

我已經給了它一個layout_width到match_parent,但沒有發生變化。 – user1462473 2012-07-22 20:39:12

+0

也刪除'maxWidth'和'minWidth'屬性。 – kcoppock 2012-07-22 20:40:47

0

我認爲你缺少從LinearLayout

其次,android:orientation屬性,如果這是你需要的所有的東西,你能避免使用TableLayout並且只使用一個單一的LinearLayoutandroid:orientation="vertical"和所有其他三個View小號它。

+0

'android:orientation'不是必須的。根據http://developer.android.com/reference/android/widget/LinearLayout.html,它默認爲「horizo​​ntal」。 – 2013-11-12 09:20:44

8

有點舊,但我相信我還有東西要補充。

我相信根據文檔(以下引用),layout_width和layout_height是爲所有TableRow子項預先確定的。

相反,layout_weight可用於確定TableRow內部元素的寬度/高度。也就是說,除非你想設置它的android:ems屬性,並根據它的字體大小給它一個寬度。

例如:

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

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:hint="@string/place" 
     android:inputType="textPersonName" > 

     <requestFocus /> 
    </EditText> 

</TableRow> 

這產生對我的TableRow內全屏寬的EditText。

下面是從的TableRow的documentation報價:

通過tablerow的孩子不需要指定XML文件中layout_height屬性layout_width和 。 TableRow總是強制 這些值分別爲MATCH_PARENT和WRAP_CONTENT。

問題是,正如我們所知道的那樣,在現實中它不會發生。我懷疑layout_width也會收到「WRAP_CONTENT」。

0

你可以在edittextview中使用layout_weight="1"

6

請添加android:stretchColumns="0"您TableLayout

+0

太棒了!這對我來說是完美的!謝謝 – arttioz 2015-12-07 09:27:27

0

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/back" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" -->> change to 0dip android:paddingRight="@dimen/activity_horizontal_margin" -->> change to 0dip android:paddingTop="@dimen/activity_vertical_margin" tools:context=".StartUp" >

相關問題