web-dev-qa-db-ja.com

ユーザーが入力しているときに、EditTextがそれ自体のサイズを変更しないようにするにはどうすればよいですか?

同じ水平線上にEditTextButtonを並べて設定しています。ユーザーが大量のテキストを入力した場合、EditTextのサイズが変更され、Buttonがつぶされた場合を除き、見栄えがよくなります。

EditTextButtonの両方をlayout_width="wrap_content"に設定しています。 "fill_parent"はレイアウトを台無しにします。必要がなければ絶対サイズを使いたくはありません-ランドスケープとポートレートの両方で見栄えが良くなりました。ただEditTextサイズを変更します。

私のレイアウト:

<TableLayout
    Android:id="@+id/homelayout"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <TableRow>
        <TextView
            Android:id="@+id/labelartist"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:text="Find artists:" />
    </TableRow>
    <TableRow>
        <EditText
            Android:id="@+id/entryartist"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="6"
            Android:background="@Android:drawable/editbox_background"
            Android:editable="true"
            Android:padding="5px"
            Android:singleLine="true" />
        <Button
            Android:id="@+id/okartist"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentRight="true"
            Android:layout_marginLeft="10dip"
            Android:layout_weight="1"
            Android:text="Search" />
    </TableRow>

</TableLayout>
49
alex_c

EditTextの使用

Android:layout_width="0dp" - not required but preferred.
Android:layout_weight="1"

また、ボタンにはAndroid:layout_weightを指定しないでください

88
bhatt4982

アクティビティのonCreateで、EditTextを最初に測定してから、そのmaxWidthを適用します。

これは、次のようなコードを使用して実行できます。

EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
14
Kevin Parker

EditTextmaxWidthを指定します。これにより、指定した幅を超えたサイズ変更が停止します。また、1行に収めたい場合は、maxLines設定も1に設定します。

5
Prashast

ただ使用する:

Android:layout_width="fill_parent"

editTextとButtonの両方に対して。 EditTextでも機能しますが、両方に設定する方が適切です。

2
Kamen

enter image description here

この動作を防ぐには、Android:imeOptionsを追加する必要があります。

ここをクリック

2
Dhina k

上に示すように、編集テキストのサイズを定義できます

Android:minWidth="80dp"
Android:maxWidth="80dp"

または

Android:layout_width="60dp"

または

希望するサイズの背景画像を適用できますが、wrap_contentで高さと幅を定義することを忘れないでください。

  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
1

これを行う正しい方法は、Android:minWidthとAndroid:maxWidthを希望の幅に設定することです。これにより、Android:layout_weightを使用するためにレイアウトを調整する必要がなくなります。

たとえば、入力する文字数に関係なく、EditTextを常に80密度ピクセルにしたい場合は、次を使用します。

Android:minWidth="80dp"
Android:maxWidth="80dp"

選択したソリューションは動作しますが、少し補足を追加します。
Android:layout_weight="0.15"を使用する場合(値は重要ではありません)
それから
Android:layout_width="0dp"LinearLayoutが水平の場合
または
Android:layout_height="0dp"LinearLayoutが垂直の場合。

0
josedacruz

正確なクエリがありました。しかし、私は線形レイアウトでEditTextとボタンが隣り合っていました。 Android:layout_weight = "1" for EditText Android:layout_width = "0dp"を試しましたが、完璧に機能しました!!どうもありがとう!

0
Shruti Dasgopal

私は同様の問題を抱えていましたが、上記を機能させることができませんでした。私がしたことは、EditTextボックスからテキストを取得し、それを画面が処理できる最大サイズにフォーマットすることです。これをDBに保存すると、表示テキストおよび元のテキストとして保存されます。

もしあなたが このページへ 行くなら、私はもっと長い説明をします。

0
Aaron