タブレットプロジェクトでAndroidのHoloテーマを使用しているところで、この問題が発生しています。しかし、画面に白い背景の断片があります。このフラグメントにEditText
コンポーネントを追加しています。 Holo.Lightテーマリソースの背景を設定してテーマを上書きするようにしました。しかし、私のテキストカーソル(カラット)は白いままなので、画面上では見えません(私はそれをエディットテキストフィールドでかすかに見分けられます).
誰かが私がどのように私が暗いカーソル色を使うためにEditTextを得ることができるかを知っていますか? EditTextのスタイルを"@Android:style/Widget.Holo.Light.EditText"
に設定してみましたが、良い結果は得られませんでした。
Android:textCursorDrawable
属性を@null
に設定すると、カーソルの色としてAndroid:textColor
が使用されます。
属性 "textCursorDrawable"は、APIレベル12以上で使用可能です。
レイアウト内
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textCursorDrawable="@drawable/color_cursor"
/>
次に、描画可能なxml:color_cursorを作成します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<size Android:width="3dp" />
<solid Android:color="#FFFFFF" />
</shape>
EditTextプロパティに白い色のカーソルがあります。
すべての答えが茂みの中を回っているように見えます。
EditText
では、次のプロパティを使用してください。
Android:textCursorDrawable="@drawable/black_cursor"
次のように、描画可能なblack_cursor.xml
をリソースに追加します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle" >
<size Android:width="1dp" />
<solid Android:color="#000000"/>
</shape>
必要であれば、これはより多様なカーソルを作成する方法でもあります。
最新のAppcompact
v21でカーソルの色を変える新しい方法があります。colorAccent
を次のように変更してください。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">#088FC9</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">#088FC9</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<!-- THIS IS WHAT YOU'RE LOOKING FOR -->
<item name="colorAccent">#0091BC</item>
</style>
それからアプリのテーマやアクティビティにこのスタイルを適用します。
更新 :この方法はAPI 21+でのみ機能する
Update 2 :それが動作することができる最小のAndroidのバージョンがわからない。
Androidのバージョンによってテスト済み:
2.3.7 - didn't work
4.4.4 - worked
5.0 - worked
5.1 - worked
答えが見つかりました:)
テーマのeditTextスタイルを次のように設定しました。
<item name="Android:editTextStyle">@style/myEditText</item>
それから私はカーソルを設定するために次のドロウアブルを使用しました:
`
<style name="myEditText" parent="@Android:style/Widget.Holo.Light.EditText">
<item name="Android:background">@Android:drawable/editbox_background_normal</item>
<item name="Android:textCursorDrawable">@Android:drawable/my_cursor_drawable</item>
<item name="Android:height">40sp</item>
</style>
`
Android:textCursorDrawable がここでの鍵です。
動的にEditText
カーソルの色を設定する必要がある人のために、以下にこれを達成する2つの方法があります。
まず、描画可能なカーソルを作成します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<solid Android:color="#ff000000" />
<size Android:width="1dp" />
</shape>
カーソル描画可能リソースIDを、作成した描画可能オブジェクトに設定します(https://github.com/Android/platform_frameworks_base/blob/KitKat- release/core/Java /Android /ウィジェット/TextView.Java#L562-564"> source)。 :
try {
Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
f.setAccessible(true);
f.set(yourEditText, R.drawable.cursor);
} catch (Exception ignored) {
}
描画可能なデフォルトのカーソルの色を変更するだけの場合は、次の方法を使用できます。
public static void setCursorDrawableColor(EditText editText, int color) {
try {
Field fCursorDrawableRes =
TextView.class.getDeclaredField("mCursorDrawableRes");
fCursorDrawableRes.setAccessible(true);
int mCursorDrawableRes = fCursorDrawableRes.getInt(editText);
Field fEditor = TextView.class.getDeclaredField("mEditor");
fEditor.setAccessible(true);
Object editor = fEditor.get(editText);
Class<?> clazz = editor.getClass();
Field fCursorDrawable = clazz.getDeclaredField("mCursorDrawable");
fCursorDrawable.setAccessible(true);
Drawable[] drawables = new Drawable[2];
Resources res = editText.getContext().getResources();
drawables[0] = res.getDrawable(mCursorDrawableRes);
drawables[1] = res.getDrawable(mCursorDrawableRes);
drawables[0].setColorFilter(color, PorterDuff.Mode.SRC_IN);
drawables[1].setColorFilter(color, PorterDuff.Mode.SRC_IN);
fCursorDrawable.set(editor, drawables);
} catch (final Throwable ignored) {
}
}
パーティーに遅れて、これが私の答えです、
これは、not彼らの親テーマのcolorAccent
を変更しようとしているが、EditText
属性を変更したいと思っている人のためのものです!)
この答えは変更方法をデモします......
- ボトムラインカラー
- カーソル色
- カーソルのポインタの色(カスタムイメージを使用しました)..............アクティビティテーマに適用されているスタイルを使用した
EditText
。
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="Hey" />
例:
<style name="AppTheme.EditText" parent="@style/Widget.AppCompat.EditText">
<item name="Android:textColor">@color/white</item>
<item name="Android:textColorHint">#8AFFFFFF</item>
<item name="Android:background">@drawable/edit_text_background</item> // background (bottom line at this case)
<item name="Android:textCursorDrawable">@color/white</item> // Cursor
<item name="Android:textSelectHandle">@drawable/my_white_icon</item> // For pointer normal state and copy text state
<item name="Android:textSelectHandleLeft">@drawable/my_white_icon</item>
<item name="Android:textSelectHandleRight">@drawable/my_white_icon</item>
</style>
今度はdrawable(edit_text_background
)を作成して背景用のリソースxmlを追加しましょう!必要に応じてカスタマイズできます。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:bottom="0dp"
Android:left="-3dp"
Android:right="-3dp"
Android:top="-3dp">
<shape Android:shape="rectangle">
<stroke
Android:width="1dp"
Android:color="@color/white"/>
</shape>
</item>
</layer-list>
これで、アクティビティテーマでこのスタイルを設定しました。
例:
あなたのアクティビティにはテーマがあり、このカスタムeditText
テーマをそれに設定します。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Your Theme data -->
<item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this
</style>
Edittext cursor color you want changes your color.
<EditText
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:textCursorDrawable="@drawable/color_cursor"
/>
次に、描画可能なxmlを作成します。color_cursor
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<size Android:width="3dp" />
<solid Android:color="#FFFFFF" />
</shape>
私はAppThemeと値のcolors.xmlの両方を修正しました。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorControlNormal">@color/yellow</item>
<item name="colorAccent">@color/yellow</item>
</style>
これはcolors.xmlです。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow">#B7EC2A</color>
</resources>
私はAndroid:textCursorDrawable属性を@nullにしてeditTextスタイルの中に配置しました。私がこれを使ってみると、色は変わりません。
うわー、私はこのパーティーに遅刻しましたが、17日前に活動していますVALUES/STYLESを入力して以下のコード行を追加すると、カーソルが黒くなります
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!--<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">-->
<!-- Customize your theme here. -->
<item name="colorControlActivated">@color/color_Black</item>
<!--Sets COLOR for the Cursor in EditText -->
</style>
RES/COLORフォルダーにこのコード行が必要です。
<color name="color_Black">#000000</color>
なぜこれを遅く投稿するの? Androidがなっている多くの頭のモンスターのためにカテゴリのいくつかのフォームを考慮するのはいいかもしれません!
editcolor.xml
Android:textCursorDrawable="@drawable/editcolor"
Xmlファイルでedittext
背景色のカラーコードを設定
唯一の有効な答えは、アクティビティのテーマを変更することです。<item name="colorAccent">#000000</item>
これはカーソル自体に関係するだけで、カーソルの下にあるピンをドラッグしたい場合は関係ないため、Android:textCursorDrawable
を@null
に使用しないでください。テーマ解決は最も深刻なものです。
ここで@ Jared RummlerのプログラムによるsetCursorDrawableColor()バージョンはAndroid 9 Pieでも動作するようになっています。
@SuppressWarnings({"JavaReflectionMemberAccess", "deprecation"})
public static void setCursorDrawableColor(EditText editText, int color) {
try {
Field cursorDrawableResField = TextView.class.getDeclaredField("mCursorDrawableRes");
cursorDrawableResField.setAccessible(true);
int cursorDrawableRes = cursorDrawableResField.getInt(editText);
Field editorField = TextView.class.getDeclaredField("mEditor");
editorField.setAccessible(true);
Object editor = editorField.get(editText);
Class<?> clazz = editor.getClass();
Resources res = editText.getContext().getResources();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
Field drawableForCursorField = clazz.getDeclaredField("mDrawableForCursor");
drawableForCursorField.setAccessible(true);
Drawable drawable = res.getDrawable(cursorDrawableRes);
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
drawableForCursorField.set(editor, drawable);
} else {
Field cursorDrawableField = clazz.getDeclaredField("mCursorDrawable");
cursorDrawableField.setAccessible(true);
Drawable[] drawables = new Drawable[2];
drawables[0] = res.getDrawable(cursorDrawableRes);
drawables[1] = res.getDrawable(cursorDrawableRes);
drawables[0].setColorFilter(color, PorterDuff.Mode.SRC_IN);
drawables[1].setColorFilter(color, PorterDuff.Mode.SRC_IN);
cursorDrawableField.set(editor, drawables);
}
} catch (Throwable t) {
Log.w(TAG, t);
}
}
特定の色が必要ですか? AppCompatEditText 次にbackround set null
私のために働く
<Android.support.v7.widget.AppCompatEditText
Android:background="@null"
Android:textCursorDrawable="@color/cursorColor"/>
この要旨 を参照してください
もう1つの簡単な解決策は、プロジェクトフォルダのres> values> colors.xmlに移動して、カラーアクセントの値を好みの色に編集することです。
<color name="colorAccent">#000000</color>
上記のコードはカーソルを黒に変えます。
それよりもさらに簡単です。
<style name="MyTextStyle">
<item name="Android:textCursorDrawable">#000000</item>
</style>
これはICS以降で動作します。他のバージョンではテストしていません。
これを使って
Android:textCursorDrawable = "@色/白"
これはAndroidではcolorAccent
と呼ばれます。
res->値-> styles.xml addに移動します
<item name="colorAccent">#FFFFFF</item>
存在しない場合。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#36f0ff</item>
<item name="colorPrimaryDark">#007781</item>
<item name="colorAccent">#000</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
styles.xmのcolorAccentの色を変更する、それは簡単です