Android 4.0にEditText
入力があり、その中にカーソルが表示されません。
カーソルが入力フィールドに表示されない原因は何ですか?
作るAndroid:cursorVisible="true"
そして
Android:textColor
を使用した場合は、Android:textCursorDrawable
属性を@null
に設定します。
幸せなコーディング;)
同様の問題がありましたが、実際にはカーソルが白で、背景が白でした。どういうわけか、コード内でカーソルを黒に変更できるようにする必要があり、このアプローチを使用しました。
これを含むtextbox.axmlというレイアウトリソースを作成しました
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="This is a template"
Android:background="#ffffff"
Android:textColor="#000000"
Android:cursorVisible="true"
Android:textCursorDrawable="@null" />
次に、このレイアウトをコード(Xamarinを使用しているためC#)に適用しました。
EditText txtCompletionDate = (EditText)LayoutInflater.Inflate(Resource.Layout.textbox, null);
しかし、Javaでも同様です。
Xmlファイルの編集テキストにこの行を追加します。
Android:textCursorDrawable="@null"
まったく同じ問題が発生しました-ユーザーがいくつかの文字を入力した後にのみカーソルが表示されました。ここにリストされている解決策を試しましたが、私のデバイスでは成功しませんでした。私にとって実際に機能するのは、編集テキストに空白のテキストを設定することです。
EditText editText = findViewById(R.id.edit_text);
editText.setText("");
これによりユーザー入力が「偽装」され、カーソルが表示されます。
私の問題は、AppCompatテーマを使用していたことですが、AppCompatスタイルを正しく適用するためにAppCompatEditTextを拡張する必要があるEditTextを拡張するカスタムビュークラスがいくつかありました。
それが役立つかもしれない人に私の個人的な修正を追加するだけです。私はここですべてを試しましたが、強制的にAndroid:background="@null"
は、右揃えのTextEdit
の最後にのみ非常に小さなカーソルを引き起こしていました(他の場所では正常に機能していました)。
単にAndroid:padding="1dp"
私のTextEdit
で問題が解決しました。
Xmlファイルの編集テキストにこの行を追加します。
Android:cursorVisible="true"
上記のように、これが実際の行です
Android:textCursorDrawable = "@ null"
<EditText
Android:textCursorDrawable="@null"
Android:imeOptions="actionNext"
Android:id="@+id/edSMobile"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/edit_corner"
Android:inputType="phone" />
EditTextにボーダー付きのバックグラウンドドローアブルがある場合、カーソルはボーダーに表示されて見えなくなります。問題を修正するには、EditTextのパディングを少量に設定します。 5 dp
何が原因なのかがわかりました。
アプリケーションのテーマから継承する必要があります。広告申込情報が正確に何である必要があるのかわかりませんが、Android:Theme
にはそれがあるので、継承することでうまくいきます。
デフォルトのAppBaseTheme
を使用すると機能します(親にはAndroid:Theme.Light
があります)。
AppBaseTheme
を使用するには、マニフェストのアプリケーションタグにAndroid:theme="@style/AppBaseTheme"
を挿入します。スタイルタグにparent="Android:Theme"
が含まれている限り、カスタムスタイルと複数の継承レベルを使用することもできます。前述のように、特定の広告申込情報を使用するだけで、それがなくても実現できる可能性があります。しかし、私はそれらがどうなるかわかりません。
カスタムテーマが必要ない場合は、使用できます
Android:theme="@Android:style/Theme"
私の場合、ユーザーの言語が英語の場合はカーソルが表示されますが、ユーザーの言語がアラビア語に変更された場合は表示されません。
これを修正するために、カーソル用のカスタムドローアブルを作成しました。
Drawable/black_cursor.xmlのCursur shap
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle" >
<solid Android:color="#a8a8a8"/><!-- This is the exact color of Android edit text Hint -->
<size Android:width="1dp" />
</shape>
テキストを編集:
<EditText
Android:id="@+id/user_name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textSize="20sp"
Android:textCursorDrawable="@drawable/black_cursor"
/>