【问题标题】:Android text selection handles have white background (instead of transparent)Android 文本选择句柄有白色背景(而不是透明)
【发布时间】:2016-11-24 22:00:54
【问题描述】:

下面的截图显示了我的问题:

文本选择句柄具有白色背景并覆盖其他 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(请注意,我看到 EditTexts 和 AppCompatEditTexts 的行为相同):

<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 元素不起作用。

【问题讨论】:

  • 由于某种原因,我无法重现此错误(至少在 Marshmallow 上)。您还有其他适用于 EditText 的样式吗?我可以看看 EditText XML 代码吗?
  • 您是否尝试过删除/注释掉您的@nulls?
  • 我无法使用 Marshmallow 在 Galaxy S7 edge 上重现。你的操作系统是什么版本?
  • @Aenadon 感谢您的帮助!请看我的编辑!
  • 使用 style ="@style/TextInputLayout" 代替 android:theme="@style/TextInputLayout"

标签: android android-edittext android-theme android-styles


【解决方案1】:

如果您在主主题中设置背景颜色,可能会发生这种情况

<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】:

    根据 android 文档,主题应用于整个活动或应用程序布局中使用的视图。对于布局中的单个视图,我们需要应用样式。

    参考:https://developer.android.com/guide/topics/ui/themes.html

    主题作为通用样式应用于活动或应用程序中的所有视图。

    【讨论】:

      【解决方案3】:

      从你的主题中删除这个&lt;item name="android:popupBackground"&gt;????&lt;/item&gt;

      【讨论】:

        【解决方案4】:

        这是因为您将背景设置为样式的一部分,并将@​​987654321@ 声明为主题而不是样式。

        这使得该视图的子视图具有相同的行为,包括文本选择处理程序。

        将这一行 &lt;item name="android:background"&gt;@color/grey_50&lt;/item&gt; 移出样式。

        【讨论】:

          【解决方案5】:

          请设置视图的背景:

              <?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>
          

          【讨论】:

            【解决方案6】:

            试试这个可能对你有帮助

            <?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>
            

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

            【讨论】:

              猜你喜欢
              • 2014-03-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-08-21
              • 2012-10-05
              • 1970-01-01
              • 1970-01-01
              • 2013-09-21
              相关资源
              最近更新 更多