【问题标题】:Editing MultiAutocompleteTextView style编辑 MultiAutocompleteTextView 样式
【发布时间】:2018-09-30 09:01:56
【问题描述】:

类似问题

Apply a style on MultiAutoCompleteTextView :问题是由于 OP 打算覆盖样式未声明的某些属性。这不是我的问题。

android: MultiAutoCompleteTextView style like gmail :这里,OP想设置和GMail一样的样式,答案显示2个API。此外,没有显示 XML 代码。因此,这与我的问题和期望非常不同。

问题

我的 ma​​terial MultiAutoCompleteTextView 样式似乎没有应用。更准确地说,我只想让我的(材质!)小部件的底部默认行变成黄色和 1px 的高度。默认情况下,它是灰色的,高度可能为 3px,如下所示。

(这是我activity的fragment启动时显示的,这是这个MultiAutoCompleteTextView的默认材质样式)

我尝试过的

很多东西! :-)

  1. 我在我的应用主题中定义了一个样式来覆盖android:autoCompleteTextViewStyle注意:android:autoCompleteTextViewStyle 不存在

  2. 在覆盖中,我尝试 a) 设置颜色 - 背景颜色、颜色、强调色、colorControlNormal、colorFocusedHighlight 等等等 - 和 b) 设置背景,在 XML 文件中定义。 没有任何效果。

来源

应用的主题

<style name="" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:autoCompleteTextViewStyle">@style/my_autoCompleteTextViewStyle</item>
    </style>

@style/my_autoCompleteTextViewStyle

<style name="my_autoCompleteTextViewStyle" parent="android:Widget.Material.Light.AutoCompleteTextView">
    <item name="android:background">@drawable/background_autocompletetextview</item>

    <item name="android:color">@color/colorRichYellow</item>
    <item name="android:borderlessButtonStyle">@color/colorRichYellow</item>
    <item name="android:colorAccent">@color/colorRichYellow</item>
    <item name="android:colorControlHighlight">@color/colorRichYellow</item>
    <item name="android:colorActivatedHighlight">@color/colorRichYellow</item>
    <item name="android:colorControlActivated">@color/colorRichYellow</item>
    <item name="android:colorControlNormal">@color/colorRichYellow</item>
    <item name="android:colorBackground">@color/colorRichYellow</item>
    <item name="android:colorFocusedHighlight">@color/colorRichYellow</item>
</style>

@drawable/background_autocompletetextview

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
    <stroke android:width="1dp" android:color="@color/colorRichYellow" />
</shape>

我的问题

我不明白为什么它不起作用。我已经为spinner(选择框)做了这个,而且效果很好......我怎样才能让它适用于我的材料MultiAutoCompleteTextView

【问题讨论】:

    标签: android android-edittext textview android-styles


    【解决方案1】:

    调度器 我认为您需要将此行添加到您的 MultiAutoCompleteTextView

    首先,为您的 MultiAutoCompleteTextView 创建一个名为“underline.xml”的背景资源

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:bottom="1dp"
            android:left="-2dp"
            android:right="-2dp"
            android:top="-2dp">
            <shape android:shape="rectangle" >
                <stroke
                    android:width="1dp"
                    android:color="@color/colorRichYellow" />
                <solid android:color="#00FFFFFF" />
                <padding
                    android:bottom="5dp"
                    android:left="5dp"
                    android:right="5dp"
                    android:top="5dp" />
            </shape>
        </item>
    </layer-list>
    

    之后,只需将 MultiAutoCompleteTextView 项设置为:

    android:background="@drawable/underline"
    

    我们需要这样做,因为您也想调整线条的大小。如果只需要改变底线的颜色,可以简单设置

    app:backgroundTint="@color/colorRichYellow"
    

    避免创建 underline.xml 文件且不设置 android:background 字段

    更新(在 cmets 中询问)

    如果您想使用您的样式,请将此行添加到您的样式文件中:

    <style name="my_autoCompleteTextViewStyle" parent="android:Widget.Material.Light.AutoCompleteTextView">
        ....
        <item name="android:background">@drawable/underline</item>
        ....
    </style>
    

    这样,你可以通过设置你的样式对你所有的 ACEditText 产生这种效果!

    【讨论】:

    • @JarsOfJam-Scheduler 当然!只需将 android:bacgkround 字段添加到您的 style/my_autoCompleteTextViewStyle 而不是 MACTextView。之后将您的个人风格设置为 MACTextView 并完成
    • 但是有没有&lt;item&gt; 的方法可以做到这一点?
    • @JarsOfJam-Scheduler 我已经更新了我的答案,检查一下;)
    • 感谢您的帮助 :-)。但是,正如我的问题所示,它不起作用。我在我的主题&lt;style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt; 中写过:&lt;item name="android:autoCompleteTextViewStyle"&gt;@style/autoCompleteTextViewStyle&lt;/item&gt;。我还写了&lt;style name="autoCompleteTextViewStyle" parent="android:Widget.Material.Light.AutoCompleteTextView"&gt; &lt;item name="android:background"&gt;@drawable/background_edittextview&lt;/item&gt; &lt;/style&gt; (background_edittextview.xml = underline.xml)。似乎使用item 方式不起作用(另一种方式)。
    • 你确定你不会弄错字吗?在您的 cmets 中,您说您有 @style/autoCompleteTextViewStyle... 但这是没有意义的。你需要设置你的风格(my_autoCompleteTextViewStyle 而不是 android 风格)
    猜你喜欢
    • 2016-09-22
    • 2018-04-29
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多