Ответ 1
Попробуйте эту ссылку . Для меня это сработало.
И вы можете найти и изменить drawables
на SDK
здесь: Android\sdk\platforms\YOUR_ANDROID_VERSION\data\res at drawables-*dpi
.
Вы можете copy and modify
их color/form
как пожелаете.
Я пытаюсь изменить цвет указателя курсора EditText (от основного цвета синий до белого), но никакое решение не работает для моего проекта. Я попытался разработать демо-проект, где тот же код работает нормально. Этот код отлично работает для >= android 5.0
Я не знаю, какой атрибут переопределен моей стоимостью. У меня есть два варианта, чтобы встретить эту проблему: -
1. найдите атрибут, который контролирует это значение цвета.
2. изменить значение цвета по java-коду при загрузке страницы (в onViewCreated).
Просьба предложить решить эту проблему.
<?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>
<?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);
Попробуйте эту ссылку . Для меня это сработало.
И вы можете найти и изменить 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
.
Сделайте новый 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" />
ОБНОВЛЕНО:
просто создайте новую тему, как -
<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>
Здесь ColorControlactiv будет ответом на ваш вопрос. И добавьте эту тему в свою деятельность и удалите стиль, который вы дали для edittext в вашем layout-
<activity
android:name="youractivityname"
android:parentActivityName="com.example.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>
Я надеюсь, что это поможет вам.
Я использовал это, и он работает со мной правильно.
<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" />
Я собрал несколько ответов на SO и нашел лучший способ сделать это:
Ищите оригинал, который можно вытащить в вашей папке sdk для Android
(\ Android-SDK\платформы\андроида-23\android.jar\рес\Drawable-ИПЧР-v4)
Отредактируйте эти изображения с помощью редактора и поместите их в свою папку.
Добавьте в свой стиль следующие строки:
<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>
Это может вам помочь.