Android EditText选定的文本范围指针得到奇怪的背景
编辑文本样式Android EditText选定的文本范围指针得到奇怪的背景,android,android-view,android-theme,Android,Android View,Android Theme,编辑文本样式 <style name="MyEditTextStyle" parent="Widget.AppCompat.EditText"> <item name="android:textCursorDrawable">@null</item> <item name="android:textColor">@color/color_states_blackish</item>
<style name="MyEditTextStyle" parent="Widget.AppCompat.EditText">
<item name="android:textCursorDrawable">@null</item>
<item name="android:textColor">@color/color_states_blackish</item>
<item name="android:fontFamily">@font/sfd_medium</item>
<item name="android:background">@drawable/edit_white_gray_x_normal_rounded</item>
<item name="android:height">@dimen/general_view_height</item>
</style>
我得到了以下与EditText背景相同的指针,我删除了它们ContextThemeWrapper,然后它正确显示,但我需要使用样式更改背景,为什么会发生这种情况?这是全屏对话框中的对话框吗?有解决办法吗?谢谢
看起来像bugg,选择器弹出窗口背景样式错误,不使用ContextThemeWrapper,样式正常显示,以编程方式设置背景
final EditText editText = new EditText(getContext());
editText.setBackgroundResource(R.drawable.edit_white_gray_x_normal_rounded);
editText.setTextColor(ContextCompat.getColor(getContext(),R.color.color_states_blackish));
问题是主题中的
android:background
参数应用于EditText
中的所有内容。对我来说,解决方案是从样式中删除该参数。除了这里的其他答案之外,当我们在style.xml中的应用程序主题中设置背景时,也会出现这种情况。我发现的另一个解决方案是将android:backgroundTint
替换为背景色的android:backgroundTint
,并将android:backgroundTintMode
设置为multiple
将其放入样式中:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:backgroundTint">#FFFFFF</item>
<item name="android:backgroundTintMode">multiply</item>
</style>
...
#FFFFFF
乘
或者在要更改其背景颜色的视图标记中:
<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#FFFFFF"
android:backgroundTintMode="multiply" />
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:backgroundTint">#FFFFFF</item>
<item name="android:backgroundTintMode">multiply</item>
</style>
<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#FFFFFF"
android:backgroundTintMode="multiply" />