If I add an EditText
in XML I can set textCursorDrawable="@null"
:
<EditText
android:id="@+id/txtE3Casecode4"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="#C7C7C5"
android:textCursorDrawable="@null"
android:ems="10"
android:inputType="number"
android:maxLength="2"
android:text="01"
android:textColor="#000000" />
Now I draw an EditText
in Java. I want set android:textCursorDrawable="@null"
.
LinearLayout.LayoutParams paramtext = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
EditText txtOther = new EditText(this);
txtOther.setLayoutParams(paramtext);
txtOther.setBackgroundColor(Color.WHITE);
txtOther.setTextColor(Color.BLACK);
txtOther.setId(99999);
// txtOther.setCursorDrawable ?
How do set it?
If you use the AppCompat library and your Activity extends AppCompatActivity, you can set the color of the text cursor (for all EditTexts) using an XML style of colorAccent:
This works on Android 5+ and is backwards compatible with older Android versions from Android 4.4 (API 19) to Android 4.0 (API 14). Note: If you're using an AutoCompleteTextView, ensure that any custom subclass of it extends AppCompatAutoCompleteTextView, otherwise the text cursor styling will not work.
See also this guide, for how to apply the color accent (tint) to Dialog buttons: Android v21 Theme.Appcompat color accent is ignored, no padding on dialogs
the answer is ---------------------> It's unattainable.
Actually, I also met this problem in my work, but after checking google's doc and source code, I fond that you cannot set this attribute in java code.
In
TextView
class you can find the code belowbut the method
textCursorDrawable()
is only existed inR.attr
, if you wanna set this attribute, you can only call the construct method below by including a editText in XML file.There is no public API to set the cursor drawable. You can set it programmatically by using reflection. The field
mCursorDrawableRes
hasn't changed so this should work on all devices, unless a manufacturer changed something or it is later changed.Use reflection to set the cursor:
Define a cursor drawable in your app:
Another approach:
You can also set the cursor color with the following method: