10

親の幅に合わせて EditText を拡張する XML コードを作成しました。非常に多くの時間を費やした後、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

少し古いですが、追加するものがあると思います。

ドキュメント (以下に引用) によると、すべての TableRow の子に対して layout_width と layout_height が事前に決定されていると思います。

代わりに、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

<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 に答える
0

android:orientationの属性が欠落していると思いますLinearLayout

次に、必要なものがこれだけであれば、 a の使用を避け、withをTableLayout1 つだけ使用し、他の 3 つの s をすべて使用することができます。LinearLayoutandroid:orientation="vertical"View

于 2012-07-22T20:58:08.670 に答える