web-dev-qa-db-ja.com

Android:重心のあるEdittextがデバイスで機能しない

In Android重力を中心に設定した1行の編集テキストを使用しています。エミュレーターでは、これはヒントと点滅するカーソルの両方が表示されます。デバイス(Xperia X10)でテストする場合、どちらもうまくいきません。ヒントテキストも点滅カーソルも表示されません。点滅カーソルは、編集テキストにテキストを入力した場合にのみ表示されます。

これは私の編集テキストです、誰かが何かが欠けているかどうか見ることができますか?

<LinearLayout 
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:gravity="center"
    Android:layout_gravity="center"
>
<EditText 
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:inputType="numberDecimal" 
    Android:ellipsize="end" 
    Android:maxLines="1"
    Android:gravity="center" 
    Android:layout_gravity="center"
    Android:hint="Some hint text"
></EditText>
</LinearLayout>

私が欲しいもの:

This is what I want

上記のコードで得られるもの(カーソルのない空のedittext):

The edittext doesn't show the hint text and have no blinking cursor

17
Martin

私はついにそれを機能させるための解決策を見つけました。このEditTextは私のために働きます:(ソニーエリクソンX10とHTCワイルドファイアでテストされました)

<EditText 
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:inputType="numberDecimal" 
    Android:digits="0123456789.,"
    Android:ellipsize="start" 
    Android:maxLines="1"
    Android:gravity="center"
    Android:hint="Some hint text"
></EditText>
45
Martin

手遅れではないことを願っています。私はこの問題に遭遇しましたが、すべてのデバイスで同じかどうかはわかりませんが、EditTextデフォルトでは下のパディングがあると表示されます。

私のEditTextテキスト値は、重力をCENTERに設定しているにもかかわらず、常に中心より少し上にあるように見えたので、さらに設定しました。

myEditText.setPadding(0, 0, 0, 0);

これは私のためにそれを修正しました、今私のEditTextは完全に中央にあります:D

5
Zhang

editTextのparentLayoutの重力centerに設定する必要があると思います

編集:

<LinearLayout 
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:gravity="center_horizontal" 
    Android:id="@+id/linearLayout">

   <EditText 
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"
       Android:inputType="numberDecimal" 
       Android:ellipsize="end" 
       Android:maxLines="1"
       Android:hint="Some hint text"/>
</LinearLayout>
4
Houcine

私は重力の組み合わせを試しました:

Android:gravity="top|center_horizontal"

以前の試みは、EditTextをRelativeLayout内にネストして中央に設定することでしたが、見栄えがよくありませんでした。この方法が最適です。

1
Valer Dragos
  • XMLファイルで、ヒントをcenter.CURSORVISIBLE = falseに設定するための重力CENTER_HORIZONTALを追加して、最初にクリックしたときにカーソルが表示されないようにします
  • Javaの場合、addTextChangedListenerを使用します。ユーザーがテキストを追加すると、重力が左に移動し、カーソルも表示されます。

XML:

<EditText Android:id="@+id/email"
  Android:layout_width="match_parent"
  Android:layout_height="wrap_content"
  Android:hint="EMAIL"
  Android:textStyle="bold"
  Android:gravity="center_horizontal"
  Android:inputType="textEmailAddress"
  Android:layout_margin="10dp"
  Android:cursorVisible="false" />

Java:

email.addTextChangedListener(new TextWatcher() 

{

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                if (s.length() > 0) {
                    // position the text type in the left top corner
                    email.setGravity(Gravity.LEFT | Gravity.TOP);
                    email.setCursorVisible(true);
                }
                else
                {
                    // no text entered. Center the hint text.
                    email.setGravity(Gravity.CENTER);
                    email.setCursorVisible(false);
                }
            }
        });
0
user6807363