Курсор EditText и цвет указателя для ниже android 5.0

Я пытаюсь изменить цвет указателя курсора EditText (от основного цвета синий до белого), но никакое решение не работает для моего проекта. Я попытался разработать демо-проект, где тот же код работает нормально. Этот код отлично работает для> = android 5.0

Я не знаю, какой атрибут переопределен моей стоимостью. У меня есть два варианта решения этой проблемы:
1. найдите атрибут, который контролирует это значение цвета.
2. изменить значение цвета по java-коду при загрузке страницы (в onViewCreated).

Пожалуйста, предложите, как решить эту проблему.

styles.xml

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="my_text_layout_style"> <item name="android:textColor">#FFF</item> <item name="android:textColorHint">#FFF</item> <item name="colorAccent">#FFF</item> <item name="colorControlNormal">#FFF</item> <item name="colorControlActivated">#FFF</item> <item name="colorControlHighlight">#FFF</item> </style> <style name="my_edit_text_style"> <item name="colorAccent">#FFF</item> <item name="android:editTextStyle">@style/MyEditTextStyle</item> </style> <style name="MyEditTextStyle" parent="Widget.AppCompat.EditText" /> </resources> 

layout.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/base_disable_btn_bg_color" android:orientation="vertical"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:hint="just a hint" app:hintTextAppearance="@style/my_text_layout_style" android:theme="@style/my_text_layout_style" android:layout_height="wrap_content"> <android.support.design.widget.TextInputEditText android:layout_width="match_parent" android:theme="@style/my_edit_text_style" android:layout_height="wrap_content" /> </android.support.design.widget.TextInputLayout> </LinearLayout> 

Пытался добавить вид программно, но не успел

 AppLinearLayout appLinearLayout = (AppLinearLayout) view.findViewById(R.id.some_id); EditText editText = new EditText(new ContextThemeWrapper(getContext(), R.style.AppTheme_Cursor)); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); editText.setLayoutParams(params); appLinearLayout.addView(editText); 

Скриншот

Solutions Collecting From Web of "Курсор EditText и цвет указателя для ниже android 5.0"

Попробуйте эту ссылку . Для меня это сработало. И здесь вы можете найти и изменить drawables на вашем SDK : Android\sdk\platforms\YOUR_ANDROID_VERSION\data\res at drawables-*dpi .

Вы можете copy and modify свой color/form по своему желанию.

Попробуйте это решение:

Используйте этот атрибут в EditText : android:textCursorDrawable="@drawable/cursor_color"

В drawable создайте: cursor_color.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="1dp" /> <solid android:color="#c8c8c8" /> 

Используйте этот attribute в своем EditText :

 android:textCursorDrawable="@null" 

Вы можете создать свой собственный style/theme только для этого EditText и изменить ColorAccent :

 <style name="EditTextColorCustom" parent="@style/AppBaseTheme"> <!-- Customize your theme here. --> <item name="colorAccent">@color/colorAccent</item> </style> 

Используйте это в style в папке с вашими values-21 .

Я использовал это, и он работает со мной правильно.

 <style name="edittext" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorControlNormal">@color/gray</item> <item name="colorControlActivated">@color/colorAccent</item> <item name="colorControlHighlight">@color/colorAccent</item> <item name="android:textColor">@color/white</item> <item name="android:textColorHint">@color/gray</item> </style> <EditText android:id="@+id/email" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="30dp" android:gravity="center" android:hint="@string/email_address" android:inputType="textEmailAddress" android:padding="@dimen/padding_16" android:textColor="@color/white" android:textColorHint="@color/login_color" android:textCursorDrawable="@color/mdtp_white" android:theme="@style/edit" /> 

Сделайте новый drawable .

Здесь 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="2dp" /> <solid android:color="#EF5350"/> <stroke android:color="#EF5350"/> </shape> 

И используйте его в EditText следующим образом:

  <EditText android:id="@+id/ed" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/roundedcornerwhite" android:hint="edit text" android:paddingBottom="10dp" android:paddingRight="10dp" android:paddingTop="10dp" android:maxLines="1" android:singleLine="true" android:imeOptions="actionNext" android:textColor="@color/colorPrimaryText" android:textColorHint="@color/hintcolor" android:textCursorDrawable="@drawable/cursor" android:textSize="16sp" /> Под  <EditText android:id="@+id/ed" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/roundedcornerwhite" android:hint="edit text" android:paddingBottom="10dp" android:paddingRight="10dp" android:paddingTop="10dp" android:maxLines="1" android:singleLine="true" android:imeOptions="actionNext" android:textColor="@color/colorPrimaryText" android:textColorHint="@color/hintcolor" android:textCursorDrawable="@drawable/cursor" android:textSize="16sp" /> 

ОБНОВЛЕНО:

Просто создайте новую тему –

 <style name="themex" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimaryDark">#666666</item> <item name="android:listDivider">@color/white_pressed</item> <item name="colorPrimary">@color/colorIcons</item> <item name="android:textColor">#b6b6b6</item> <item name="android:windowDisablePreview">true</item> <item name="colorControlActivated">@color/olagreen</item> <item name="android:windowAnimationStyle">@null</item> </style> 

Здесь colorcontrolactivated будет ответом на ур вопрос. И добавьте эту тему в свою деятельность и удалите стиль, присвоенный edittext в макете ur,

 <activity android:name="youractivityname" android:parentActivityName="com.khaalijeb.inkdrops.Activities.AboutUs" android:screenOrientation="portrait" android:theme="@style/themex"/> 

ОБНОВИТЬ:

Если вы тогда не работаете, просто проверьте, находится ли ваш фрагмент внутри действия, и вы указали правильную тему для этой активности. Этот фрагмент также будет содержать эту тему. Если его не работает, попробуйте это –

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainlayout" style="@style/themex" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorIcons" android:orientation="vertical" android:weightSum="2"> </RelativeLayout> 

Я надеюсь, что это поможет вам.

Я собрал несколько ответов на SO и нашел лучший способ сделать это:

  1. Посмотрите оригинал, который можно извлечь в папке sdk для Android (\ android-sdk \ platform \ android-23 \ android.jar \ res \ drawable-hdpi-v4) Введите описание изображения здесь

  2. Отредактируйте эти изображения с помощью редактора и поместите их в свою папку.

  3. Добавьте следующие строки в свой стиль:

     <item name="android:textSelectHandle">@drawable/my_drawable_handle</item> <item name="android:textSelectHandleLeft">@drawable/my_drawable_handle_left</item> <item name="android:textSelectHandleRight">@drawable/my_drawable_handle_right</item> 

Результат:

Введите описание изображения здесь

 <style name="my_edit_text_style"> <item name="colorAccent">#FFF</item> <item name="android:editTextStyle">@style/MyEditTextStyle</item> <item name="colorAccent">#FFF</item> <item name="colorControlNormal">#FFF</item> <item name="colorControlActivated">#FFF</item> </style> 

Это может вам помочь.