2012-07-22 76 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" >

相关问题