ユーザーが入力しているときに、EditTextがそれ自体のサイズを変更しないようにするにはどうすればよいですか?
-
05-07-2019 - |
質問
同じ水平線上に隣り合わせに設定された EditText
と Button
があります。ユーザーが大量のテキストを入力し、 EditText
のサイズが変更され、 Button
が押しつぶされる場合を除いて、見栄えがよくなります。
EditText
と Button
の両方を 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>
解決
EditTextで使用する場合
android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"
また、ボタンには android:layout_weight
他のヒント
アクティビティのonCreateで、EditTextを最初に測定してから、そのmaxWidthを適用します。
次のようなコードを使用してこれを行うことができます。
EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
EditText
に maxWidth
を指定します。これにより、指定した幅を超えたサイズ変更が停止します。また、1行に収めたい場合は、 maxLines
設定も1に設定します。
使用方法:
android:layout_width="fill_parent"
EditTextとButtonの両方。 EditTextでも機能しますが、両方に設定した方が良いでしょう。
上に示すように、編集テキストのサイズを定義できます
android:minWidth="80dp"
android:maxWidth="80dp"
または
android:layout_width="60dp"
または
必要なサイズの背景画像を適用できます しかし、その高さと幅を定義することを忘れないでください wrap_contentで。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
同様の問題が発生しましたが、上記を機能させることができませんでした。私がやったことは、EditTextボックスからテキストを取得し、画面が処理できる最大サイズにフォーマットすることです。これをDBに保存すると、表示テキストおよび元のテキストとして保存されます。
このページにアクセスした場合、より長い説明を付けます。
これを行う正しい方法は、android:minWidthとandroid:maxWidthを希望の幅に設定することです。これにより、android:layout_weightを使用するためにレイアウトを調整する必要がなくなります。
たとえば、入力する文字数に関係なく、EditTextを常に80密度ピクセルにしたい場合は、次を使用します。
android:minWidth="80dp"
android:maxWidth="80dp"
正確なクエリがありました。しかし、私は線形レイアウトでEditTextとボタンが隣り合っていました。 android:layout_weight =&quot; 1&quot;を試しました。 EditTextの場合 android:layout_width =&quot; 0dp&quot; そしてそれは完璧に機能しました!! どうもありがとう!
選択したソリューションは機能しますが、少し補足してみましょう。
使用する場合
android:layout_weight =&quot; 0.15&quot;
(値は重要ではありません)
その後
LinearLayout
が水平の場合、 android:layout_width =&quot; 0dp&quot;
または
LinearLayout
が垂直の場合、 android:layout_height =&quot; 0dp&quot;
。