Ответ 1
Вы пытались?
Установка атрибута android:textCursorDrawable
в @null должна привести к использованию android:textColor
в качестве цвета курсора.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff" />
<stroke android:width="1dp"
android:color="#000000" />
</shape>
Я использую этот код в setBackgroundResource(R.drawable.selfbg);
Хотя я использую этот код, курсор не отображается в Edittext.
Вы пытались?
Установка атрибута android:textCursorDrawable
в @null должна привести к использованию android:textColor
в качестве цвета курсора.
попробуйте добавить ниже в EditText:
android:textCursorDrawable="@null"
android:background="@null"
попробовать:
<item name="android:textCursorDrawable">@null</item>
Для этого требуется API-12 и выше.
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textCursorDrawable="@drawable/color_cursor"
android:background="@drawable/R.drawable.selfbg"/>
Than create drawalble xml: color_cursor
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android:width="2dp" />
<solid android:color="#000000" />
</shape>
Я думаю, что вы не можете "setTextCursorDrawable" по коду.
ive посмотрел в документацию по Android EditText и TextView и такого метода нет.
поэтому вам нужно сделать это в макете xml.
попробуйте это
В вашем EditText используйте свойство:
android:textCursorDrawable="@drawable/black_cursor"
и добавьте drawable 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="0dp" />
</shape>
Если вы хотите, чтобы это выполнялось только с помощью java-кода попробуйте это
В классе TextView вы можете найти код ниже
case com.android.internal.R.styleable.TextView_textCursorDrawable:
mCursorDrawableRes = a.getResourceId(attr, 0);
break;
но метод textCursorDrawable() существует только в R.attr, если вы хотите установить этот атрибут, вы можете вызвать метод метода ниже, включив в текстовый файл editText.
public EditText(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.editTextStyle);
}
Основная деятельность
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
editText.requestFocus();
editText.setSelection(0);
}
activity_main
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
layout="@layout/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
content_main
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Как вы можете видеть, мой EditText находится не в activity_main, а в content_main, который я в любом случае включил в activity_main, надеясь, что он будет работать так же, но НЕТ... К сожалению, это не работает. Таким образом, я изменяю свою Activity_main следующим образом, и это работает как шарм.
**activity_main**
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>