定制分配器/分离器在AutocompleteTextview的下拉(Customize divide

2019-06-26 16:42发布

我已经看到了这个问题,问一些其他的时间在网站上,但没有一个人不能得到任何答案。

有什么办法可以自定义在使用android系统中的AutocompleteTextview时显示的下拉分频器的外观?

这是很容易的一个ListView,但只使用一个ArrayAdapter为autocompletetextview,有没有什么办法可以自定义的分隔线。

(不TextView的,我已经知道这样做)

Answer 1:

林不知道你怎么能单AutoCompleteTextView做,但我知道如何设置它为整个应用程序。 这也应该帮助你:)

<style name="MyTheme" parent="AppTheme">
        <item name="android:dropDownListViewStyle">@style/MyListViewStyle</item>
</style>

<style name="MyListViewStyle" parent="@android:style/Widget.ListView">
        <item name="android:divider">#F00</item>
        <item name="android:dividerHeight">1px</item>
</style>


Answer 2:

我没有找到任何分隔的属性,所以我做了这个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/textView129"
    android:textColor="#000000"
    android:background="@color/white"
    android:layout_marginBottom="1dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"/>
</LinearLayout>

所以笏即时通讯做是我对线性布局的背景颜色和文本查看其他背景颜色(的TextView的背景颜色重叠的线性布局的背景颜色)现在使用margin属性和设置的TextView的下边距日子会把1DP得到元素之间的干净的线....



Answer 3:

我曾面临同样的问题,尝试了很多方法,但没有取得结果,最后我得到了一个快速简便的方法来设置分频器和分频器lenght与AutocompleteTextview。 基本上,我们可以从底侧ArrayAdapter布局TextView的设置上边框。 作为一样

步骤1。 做一个布局等作为arrayadapetr

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/testt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_single_line"
android:textColor="@drawable/text_color"
android:textAppearance="?android:attr/textAppearanceMediumInverse"
style="?android:attr/dropDownItemStyle"
android:maxLines="1"
android:padding="3dp"
android:textSize="16sp" />

第二步:在绘制文件夹中创建新的布局它的名字background_single_line.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/black" />
    </shape>
</item>
<item android:bottom="1dp">
    <shape android:shape="rectangle">
        <solid android:color="@android:color/white" />
    </shape>
</item>

最后看起来分频器。



Answer 4:

从答案标记通常是最好的解决方案。 但是不同版本的程序兼容性库具有不同的行为,关于如何android:dropDownListViewStyle影响其他菜单,如系统溢/选项菜单。 例如,在程序兼容性版本23.0.1,也不会影响在动作条/工具栏这个菜单; 而23.2.1版本,它会影响它,如解释在这里 。

如果你想被隔离,只影响AutoCompleteTextView一种风格,它可能是不可能的。 但是,另一种方法是手动创建列表分隔形象,下拉列表行的布局的一部分:

RES /布局/ autocomplete_list_row.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:layout_height="50dip">

    <TextView
        android:id="@+id/text"
        style="?android:attr/dropDownItemStyle"
        android:textSize="18sp"
        android:layout_width="fill_parent"
        tools:text="An auto-complete list item"
        android:minHeight="48dip"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:background="@drawable/divider"/>

</LinearLayout>

RES /抽拉/ divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <size android:height="1dp" />
    <solid android:color="#458c8c8c" />
</shape>

然后在你的适配器的AutoCompleteTextView使用此布局:

ArrayAdapter<CharSequence> autoCompleteListAdapter = 
    new ArrayAdapter<>(context,
                       R.layout.autocomplete_list_row,
                       R.id.text, arrayList);

使用ConstraintLayout类似的方法在这里 。



文章来源: Customize divider / separator in dropdown of an AutocompleteTextview