1. ホーム
  2. android

[解決済み] android:maxWidthの使い方を教えてください。

2022-02-18 11:02:03

質問

エディットボックスの最大幅を設定したい。そこで、こんな小さなレイアウトを作りました。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:maxWidth="150dp" > 

    <EditText 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:ems="10" /> 
</LinearLayout> 

しかし、それはうまくいきません、とにかくボックスは150dp以上になる可能性があります。 android:maxWidth="150dp" の中に EditText を実行しても、同じ結果になります。私は読みました( maxWidthはfill_parentで動作しません。 ) によると、最大幅と最小幅の両方を同じサイズに設定すれば解決するとのことです。

<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:maxWidth="50dp"
        android:minWidth="50dp" />

でも、そうではないんです。

私の問題を解決する方法は、ここにあります。 ViewGroupに最大幅を設定する そして、これはとてもうまくいきます。しかし、私は maxWidth 属性があるのは、そのためです。どのように使うべきでしょうか?あるいは、これに関するドキュメントはあるのでしょうか?私はこの問題に何時間も費やしましたが、この単純な属性の使い方をまだ理解していません。

どのように解決するのですか?

<ブロッククオート

エディットボックスの最大幅を設定したいのですが。

あなたの例では

<EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" /> 

layout_widthems 属性は同じ値を設定しようとしています。Androidは、より大きな fill_parent の値で、もう一方は無視されます。そして、これを使用すると

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:maxWidth="50dp"
    android:minWidth="50dp" />

ここで emsmaxWidth が同じ値を設定しようとした場合、ここでも大きい方の値が使われます。ですから、実際に何をしたいかに応じて、使用することができます。

<EditText 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" /> 

または android:ems="10"android:maxWidth="50dp" dpで作業したい場合。

最後に、あなたのLinearLayoutは1つの子、EditTextしか持っていません。通常、このような場合は、LinearLayoutタグを削除して、EditTextを単独で使用することができます。