Android Material 激活的外露下拉菜单使用自定义颜色而不是原色
Android Material Exposed Dropdown Menu activated use custom color instead of primary color
我在尝试更改显示的下拉菜单激活时的下划线和浮动标签的颜色时遇到问题。
"colorControlActivated" 我填充的暴露下拉菜单当前是蓝绿色。无论我在样式文件中指示什么(黑色),我的 registerOrderName 菜单仍将为 colorControlActivated 使用 colorPrimary 颜色。
在我的样式文件中
<!-- Legacy TextField Theme-->
<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
<item name="colorControlNormal">@color/textPlaceholderColor</item>
<item name="colorControlActivated">@color/textFieldColor</item>
<item name="colorControlHighlight">@color/textFieldColor</item>
</style>
<!-- TextField Hint Theme-->
<style name="TextInputLayoutHintText">
<item name="android:textColor">@color/textPlaceholderColor</item>
<item name="android:textSize">16sp</item>
</style>
<!-- Legacy Drop Down Menu Theme-->
<style name="MenuLayoutAppearance" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<item name="colorControlNormal">@color/textPlaceholderColor</item>
<item name="boxBackgroundColor">@color/white</item>
<item name="colorControlActivated">@color/textFieldColor</item>
<item name="colorControlHighlight">@color/textFieldColor</item>
</style>
<style name="Autocomplete">
<item name="colorControlActivated">@color/textFieldColor</item>
<item name="colorControlHighlight">@color/textFieldColor</item>
</style>
在我的 activity.xml 文件中
android:id="@+id/registerTextInputLayout4"
style="@style/MenuLayoutAppearance"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="20dp"
android:elevation="12dp"
app:hintTextAppearance="@style/TextInputLayoutHintText"
app:layout_constraintEnd_toEndOf="@+id/registerForm"
app:layout_constraintStart_toStartOf="@+id/registerForm"
app:layout_constraintTop_toBottomOf="@+id/registerTextInputLayout3">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/registerOrderName"
android:theme="@style/Autocomplete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/open_sans"
android:hint="@string/RegisterForm4"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:singleLine="true"
android:textColor="@color/textFieldColor"
android:textCursorDrawable="@drawable/cursor_color"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>
在我的颜色文件中
<color name="colorPrimary">#00BEBA</color>
<color name="colorPrimaryDark">#00BEBA</color>
<color name="colorAccent">#F60606</color>
<color name="white">#FFFFFF</color>
<color name="green">#17B3AB</color>
<color name="version">#0B0008</color>
<color name="appBackgroundColor">#00BEBA</color>
<color name="textPlaceholderColor">#807E7E</color>
<color name="textFieldColor">#000000</color>
<color name="textFieldCursorColor">#FB0000</color>
<color name="textFieldHightLightColor">#2196F3</color>
<color name="customGreen">#92CFCD</color>
<color name="defaultLinkBlue">#007aff</color>
<color name="facebookBlue">#3B5998</color>
您可以使用 android:theme
属性覆盖 colorPrimary
:
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
android:theme="@style/InputText_Overlay"
..>
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.google.android.material.textfield.TextInputLayout>
与:
<style name="InputText_Overlay">
<item name="colorPrimary">@color/....</item>
</style>
我在尝试更改显示的下拉菜单激活时的下划线和浮动标签的颜色时遇到问题。 "colorControlActivated" 我填充的暴露下拉菜单当前是蓝绿色。无论我在样式文件中指示什么(黑色),我的 registerOrderName 菜单仍将为 colorControlActivated 使用 colorPrimary 颜色。 在我的样式文件中
<!-- Legacy TextField Theme-->
<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
<item name="colorControlNormal">@color/textPlaceholderColor</item>
<item name="colorControlActivated">@color/textFieldColor</item>
<item name="colorControlHighlight">@color/textFieldColor</item>
</style>
<!-- TextField Hint Theme-->
<style name="TextInputLayoutHintText">
<item name="android:textColor">@color/textPlaceholderColor</item>
<item name="android:textSize">16sp</item>
</style>
<!-- Legacy Drop Down Menu Theme-->
<style name="MenuLayoutAppearance" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<item name="colorControlNormal">@color/textPlaceholderColor</item>
<item name="boxBackgroundColor">@color/white</item>
<item name="colorControlActivated">@color/textFieldColor</item>
<item name="colorControlHighlight">@color/textFieldColor</item>
</style>
<style name="Autocomplete">
<item name="colorControlActivated">@color/textFieldColor</item>
<item name="colorControlHighlight">@color/textFieldColor</item>
</style>
在我的 activity.xml 文件中
android:id="@+id/registerTextInputLayout4"
style="@style/MenuLayoutAppearance"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="20dp"
android:elevation="12dp"
app:hintTextAppearance="@style/TextInputLayoutHintText"
app:layout_constraintEnd_toEndOf="@+id/registerForm"
app:layout_constraintStart_toStartOf="@+id/registerForm"
app:layout_constraintTop_toBottomOf="@+id/registerTextInputLayout3">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/registerOrderName"
android:theme="@style/Autocomplete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/open_sans"
android:hint="@string/RegisterForm4"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:singleLine="true"
android:textColor="@color/textFieldColor"
android:textCursorDrawable="@drawable/cursor_color"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>
在我的颜色文件中
<color name="colorPrimary">#00BEBA</color>
<color name="colorPrimaryDark">#00BEBA</color>
<color name="colorAccent">#F60606</color>
<color name="white">#FFFFFF</color>
<color name="green">#17B3AB</color>
<color name="version">#0B0008</color>
<color name="appBackgroundColor">#00BEBA</color>
<color name="textPlaceholderColor">#807E7E</color>
<color name="textFieldColor">#000000</color>
<color name="textFieldCursorColor">#FB0000</color>
<color name="textFieldHightLightColor">#2196F3</color>
<color name="customGreen">#92CFCD</color>
<color name="defaultLinkBlue">#007aff</color>
<color name="facebookBlue">#3B5998</color>
您可以使用 android:theme
属性覆盖 colorPrimary
:
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
android:theme="@style/InputText_Overlay"
..>
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.google.android.material.textfield.TextInputLayout>
与:
<style name="InputText_Overlay">
<item name="colorPrimary">@color/....</item>
</style>