10

我编写了一个 XML 代码,我希望在其中扩展 EditText 以适合父宽度。花了这么多时间后,我找不到扩展EditText的方法。

这是我的 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>

我在这里做错了什么。请帮我。

4

7 回答 7

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文档中的一段话:

TableRow 的子项不需要在 XML 文件中指定 layout_width 和 layout_height 属性。TableRow 始终强制这些值分别为 MATCH_PARENT 和 WRAP_CONTENT。

正如我们所知,问题在于,实际上它并没有发生。我怀疑 layout_width 也会收到“WRAP_CONTENT”。

于 2013-04-01T15:34:27.067 回答
7

请添加android:stretchColumns="0"到您的 TableLayout

于 2013-11-25T10:37:32.597 回答
2

在每一行中添加一个额外的 TextView 列。

此代码可能会对您有所帮助。

<?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>
于 2012-07-22T21:11:35.320 回答
1

不确定是否严重。

您将 EditText 的最小宽度 ( minWidth) 设置为大于其最大宽度 ( maxWidth),并且您没有给它一个layout_width属性(您应该将其设置为match_parent)。

于 2012-07-22T20:31:20.203 回答
0

android:orientation我认为您缺少LinearLayout

其次,如果这就是您所需要的,您可以避免使用 aTableLayout并且只使用一个LinearLayoutwithandroid:orientation="vertical"和其中的所有其他三个Views。

于 2012-07-22T20:58:08.670 回答
0

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

于 2013-05-22T07:30:35.073 回答
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" >

于 2014-02-23T02:25:21.337 回答