12

残念ながら、EditText の楕円サイズを機能させることができません。テキストが長すぎる場合、テキストの最後に 3 つのドットを配置することさえ可能ですか? TextiView では完全に機能しますが、EditText では機能しません。アイデア?

 android:id="@+id/ed_email_personalInfo"
 android:layout_width="match_parent"
 android:layout_height="55dp"
 android:background="@color/transparent"
 android:ellipsize="end"
 android:ems="10"
 android:hint="@string/email"
 android:inputType="textEmailAddress"
 android:maxLength="64"
 android:paddingLeft="10dp"
 android:paddingRight="10dp"
 android:singleLine="true"
 android:textColorHint="@color/col9a9a9a"
 android:textSize="15.7sp"
4

5 に答える 5

21

テキストを編集するには、このプロパティを設定します。Elipsize は編集テキストを無効にして動作しています

    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:singleLine="true"
    android:editable="false"
于 2013-12-31T12:13:51.870 に答える
2

EditText では不可能な場合があります (独自のビューを作成しない限り)。デフォルトの動作(singleLine EditTextの場合)は、テキストがビューに収まらない場合にテキストを横にスクロールできることだと思います。

于 2013-10-10T03:34:52.977 に答える
2

それが質問に答えているかどうかはわかりません (元の質問者は 7 年半後、もうそれほど興味を持っていないと思います)。 .

これで論理を見つけようとしないでください。しかし、Oleksandr と Mubarak からの回答に基づいて、次のことがわかりました。

XML で EditText を省略表示するには、 deprecated を使用しますandroid:editable="false"。私の場合:

android:editable="false"
android:focusable="false"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"

android:inputType="none"とりあえずいじる必要はありません。EditText は TextView と同じように見え、適切に省略されています。

次のように、EditText を編集可能にする (および省略記号を削除する) ことができます。

editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
editText.setActivated(true);
editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS); // or whatever fits your needs
editText.setSingleLine(true);
editText.setEllipsize(null);
editText.requestFocus();

その後、次のように EditText を元の状態 (つまり、TextView として偽装し、適切に楕円化) に復元できます。

editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
editText.setActivated(false);
editText.setSingleLine(true);
editText.setKeyListener(null); // this is the key
editText.setEllipsize(TextUtils.TruncateAt.END);
于 2021-04-30T09:01:41.727 に答える