TextInputLayout和AutoCompleteTextView背景在预览中看起来很好,但在设备上它始终是白色的

时间:2017-05-17 00:13:47

标签: android android-layout autocompletetextview android-textinputlayout

尽量缩短。

这是我对TextInputLayout的风格

<style name="TextLabel" parent="Widget.AppCompat.AutoCompleteTextView">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/pure_white</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/pure_white</item>
    <item name="colorControlNormal">@color/pure_white</item>
    <item name="colorControlActivated">@color/pure_white</item>
    <!-- When everything else failed I tried this but with no effect -->
    <item name="android:background">@android:color/transparent</item>
</style>

这是布局中的实现

    <android.support.design.widget.TextInputLayout
        android:theme="@style/TextLabel"
        android:layout_margin="@dimen/activity_margin_basic_double"
        android:layout_centerInParent="true"
        android:id="@+id/team_name_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <AutoCompleteTextView
            android:id="@+id/new_team_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/prompt_team_create"
            android:maxLines="1" />

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

这就是我在设备上获得的(物理和模拟): enter image description here

但这是我真正想要的,Android Studio预览实际上正确显示它,它只是不会这样编译:

enter image description here

任何想法如何让这个排序好吗?我已经浪费了几天试图弄清楚这一点,但却无法解决问题

非常感谢提前! Sloba

1 个答案:

答案 0 :(得分:1)

问题在于你的风格。您正在将Widget.AppCompat.AutoCompleteTextViewTextInputLayout一起应用于您所看到的结果。您可以将此父级样式更改为AppTheme或将android:theme="@style/TextLabel"移至AutoCompleteTextView,而不是更改父级。我在下面展示了第一种方式。

这个小视频展示了我所做的改变,以获得我认为你想要的东西。我添加了一些东西来更好地展示它是如何工作的。它可能不是你需要的100%,但它应该让你超过门槛。

Demo video

以下是XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFcc9c00"
    android:orientation="vertical">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/team_name_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:theme="@style/TextLabel">

        <AutoCompleteTextView
            android:id="@+id/new_team_name"
            android:layout_width="match_parent"
            android:hint="Choose a Team Name"
            android:layout_height="wrap_content"
            android:maxLines="1" />
    </android.support.design.widget.TextInputLayout>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/team_name_container"
        android:layout_margin="8dp"
        android:hint="EditText hint" />
</RelativeLayout>

和styles.xml:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="TextLabel" parent="AppTheme">
        <!-- Hint color and label color in FALSE state -->
        <item name="android:textColorHint">@android:color/white</item>
        <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
        <item name="colorAccent">@android:color/white</item>
        <item name="colorControlNormal">@android:color/white</item>
        <item name="colorControlActivated">@android:color/white</item>
    </style>
</resources>