安卓文本选择句柄有白色背景(而不是透明的)

5
以下截图显示了我的问题: enter image description here 文本选择句柄具有白色背景,并覆盖其他UI元素。如何使背景透明?
或者更好的问题实际上是:我可能做了什么让背景变成白色?
这是应用于EditText的样式:
<style name="TextInputLayout" parent="AppTheme">
    <item name="android:background">@color/grey_50</item>
    <item name="colorControlNormal">@color/grey_500</item>
    <item name="colorControlActivated">@color/grey_900</item>
    <item name="colorControlHighlight">@color/grey_900</item>
    <item name="backgroundTint">@color/grey_900</item>
    <item name="colorAccent">@color/grey_900</item>
    <item name="colorPrimary">@color/grey_900</item>
    <item name="android:textCursorDrawable">@null</item>
</style>

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/grey_500</item>
    <item name="colorPrimaryDark">@color/grey_500</item>
    <item name="colorAccent">@color/grey_700</item>
    <item name="android:colorBackground">@color/grey_50</item>
    <item name="android:colorForeground">@color/grey_900</item>
    <item name="android:textColorPrimary">@color/grey_900</item>
    <item name="android:textColorPrimaryInverse">@color/grey_50</item>
    <item name="android:textColorSecondary">@color/grey_900</item>
    <item name="android:textColorSecondaryInverse">@color/grey_50</item>
    <item name="android:windowBackground">@color/grey_50</item>
    <item name="android:textColorHint">@color/grey_700</item>
    <item name="android:colorActivatedHighlight">@color/grey_900</item>
    <item name="colorControlNormal">@color/grey_700</item>
    <item name="colorControlActivated">@color/grey_900</item>
    <item name="colorControlHighlight">@color/grey_900</item>
    <item name="android:textColorHighlight">@color/grey_500</item>
    <item name="android:colorControlNormal" tools:targetApi="lollipop">@color/grey_700</item>
    <item name="android:colorControlActivated" tools:targetApi="lollipop">@color/grey_900</item>
    <item name="android:colorControlHighlight" tools:targetApi="lollipop">@color/grey_900</item>
    <item name="android:stateListAnimator" tools:targetApi="lollipop">@null</item>
    <item name="android:statusBarColor" tools:targetApi="lollipop">@color/grey_900</item>
    <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/grey_900</item>
</style>

编辑 #1

EditText的XML(请注意,我在EditTextAppCompatEditText中看到了相同的行为):

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_layout_home_autocomplete"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/activity_horizontal_margin_small"
    android:layout_marginTop="@dimen/activity_horizontal_margin_small"
    android:layout_weight="3.5"
    android:background="@null"
    android:hint="@string/location"
    android:padding="@dimen/activity_vertical_margin_medium"
    android:theme="@style/TextInputLayout"
    app:hintAnimationEnabled="true"
    app:hintEnabled="true"
    app:hintTextAppearance="@style/TextAppearance.TextInputLayout">

    <AutoCompleteTextView
        android:id="@+id/user_home_autocomplete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="3.5"
        android:dropDownWidth="match_parent"
        android:inputType="textAutoComplete"
        android:maxLines="1"
        android:paddingTop="@dimen/activity_horizontal_margin_small" />

</android.support.design.widget.TextInputLayout>

我用来截屏的手机运行的是Android 6.0.1操作系统,并且安装了OxygenOS 3.2.7。

移除所有@null元素并没有起到作用。


你尝试过移除或注释掉你的 @null 吗? - Sammy T
@Aenadon 谢谢你的帮助!请看我的编辑! - Barthy
@SammyT 这没用...看看我的修改! - Barthy
@FarazAhmed 请查看编辑内容! - Barthy
1
请使用 style="@style/TextInputLayout" 而不是 android:theme="@style/TextInputLayout"。 - Madhan
显示剩余9条评论
6个回答

6
如果您在主题中设置了背景颜色,类似于以下内容,则可能会发生这种情况。
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="android:background">@color/white</item>
    ...
 </style>

删除此属性可以解决我的问题,如果您想为所有屏幕设置背景,请设置windowBackground。

<item name="android:windowBackground">@color/white</item>

2
根据安卓文档,主题适用于整个活动或应用程序布局中使用的视图。对于布局中的单个视图,我们需要应用样式。
参考:https://developer.android.com/guide/topics/ui/themes.html 主题作为通用样式应用于活动或应用程序中的所有视图。

2

从您的主题中删除此内容 <item name="android:popupBackground">????</item>


1
这是因为您将背景设置为样式的一部分,并将android:theme="@style/TextInputLayout"声明为主题而不是样式。
这意味着该视图的子视图具有相同的行为,包括文本选择处理程序。
请将此行<item name="android:background">@color/grey_50</item>移到样式之外。

-1
请为视图设置背景:
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="YOUR_CUSTOM_COLOR" />
    <item android:state_selected="true" android:color="#80000000" />
    <item android:color="YOUR_CUSTOM_COLOR" />
    </selector>

-1

试试这个,可能会对你有帮助

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Pressed State -->
    <item android:state_pressed="true"
        android:color="#FFFFFF" />  

    <!-- Focused State -->
    <item android:state_focused="true"
        android:color="#FFFFFF" /> <!-- use background color here -->

    <!-- Default State -->
    <item android:color="#000000" />
</selector>

将此属性设置为您的编辑文本的背景。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接