3

EditText フィールドの背景に 9 パッチ イメージを使用すると、スケーリングの問題が発生します。幅全体に広がるテーブルがあります。ここには、テーブルの幅を埋める次のテーブル行があります。

問題は、背景として 9 パッチの画像を使用しているのに、編集テキスト フィールドが幅全体に伸びず、ヒント テキストの幅にしか伸びないことです。

<TableRow
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical|center_horizontal" >

    <EditText
        android:id="@+id/et_username"
        android:contentDescription="@string/hint_enterUsername"
        android:hint="@string/hint_enterUsername"
        android:singleLine="true"
        android:textSize="@dimen/edittext_textsize"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"                    
        android:gravity="center_horizontal|center_vertical"
        android:background="@drawable/background_field_top" />

</TableRow>

添付の画像に示すように、行の幅は伸びますが、EditText フィールドは伸びないことがグラフィカル ビューでわかります。

グラフィカル ビュー

編集テキストを全体のサイズに伸ばす方法について誰かアイデアはありますか? 以下は、私が使用している 9 パッチ イメージです。

9パッチ画像

4

3 に答える 3

2

TableRowの Android 開発者ドキュメントから

子を水平に配置するレイアウト。TableRow は、常に TableLayout の子として使用する必要があります。TableRow の親が TableLayout でない場合、TableRow は水平 LinearLayout として動作します。

@Nipun Gogiaの答えは正しくありません。EditTextの子が1つだけのLinearLayout内にTableRow(水平LinearLayoutのように動作する)を配置するのはなぜですか?

代わりに、 EditText ビューを TableLayout の直接の子として配置する必要があります。これにより、テーブルのすべての列にまたがる単一の行として表示されます。また、必要に応じて、TableRow と Column をさらに追加できます。

9-Patch を使用して EditText ビューの背景画像を引き伸ばします。

画像の伸縮可能領域を設定する 9.png ファイルの 9-patch ルールを編集し、上部のルール (黒い 1px ライン) を画像の中央に配置する必要があります。伸びていない画像。彼女のやり方を学びましょう: http://developer.android.com/tools/help/draw9patch.html

重要!拡張子 .9.png を付けて画像を保存することを忘れないでください


ファイル拡張子: background で保存された 9 パッチ画像。9.png _

ここに画像の説明を入力


小さい画像を変更すると、9 パッチ ルールにより、上の画像と同じように見えます。

修正された画像


画像を変更しましたが、高さは伸縮できません。

ここに画像の説明を入力


注: 上記の画像を「名前を付けて保存」でダウンロードする場合は、ファイル名に.9.pngを追加してください。

于 2013-01-14T18:30:06.940 に答える
1

画像ファイル名が background_field_top.9.png であることを確認してください (.9. があることを確認してください)。コーナーの丸みがより滑らかになるように、画像に小さな変更を加えましたが、それは重要な問題ではありません。推奨画像 これで問題が解決しない場合は、テーブルがなくても背景が適切に機能するかどうかを確認し、問題がレイアウトにあるのか背景画像にあるのかを特定します。

于 2013-01-15T09:58:00.193 に答える
1

あなたは私のためにうまく働いています..私は自分の9パッチを使用しています...これが私のコードです:

        <LinearLayout
            android:id="@+id/layout"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical|center_horizontal" >

                <EditText
                    android:id="@+id/et_username"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/areanumber"
                    android:gravity="center_horizontal|center_vertical"
                    android:singleLine="true"
                    android:text="hello" />
            </TableRow>
        </LinearLayout>

ここでareanumberは私の9パッチイメージです...コードをlinearlayout内にラップしてみてください。9パッチイメージを実装し、それも正常に動作しています

ここに画像の説明を入力

于 2013-01-16T07:02:51.397 に答える