如何更改SearchView上的光标拉杆背景颜色?

时间:2019-07-11 08:04:56

标签: android android-layout

我的光标上有这个白色背景:

enter image description here

此搜索视图在appbarlayout上的布局:

<com.google.android.material.appbar.AppBarLayout
        android:id="@+id/search_app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:clipToPadding="false">


    <androidx.appcompat.widget.Toolbar
            android:id="@+id/search_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorAccent"
            android:paddingTop="8dp"
            app:contentInsetStart="0dp">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

            <androidx.appcompat.widget.SearchView
                    android:id="@+id/organization_search_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:theme="@style/OrganizationSearchView"
                    app:queryBackground="@android:color/transparent"
                    app:submitBackground="@android:color/transparent"
                    app:iconifiedByDefault="false"
                    android:layout_marginStart="8dp"
                    android:layout_marginEnd="8dp"
                    android:elevation="8dp"
                    app:searchIcon="@drawable/ic_search"
                    app:voiceIcon="@drawable/ic_mic"/>

            <com.google.android.material.tabs.TabLayout
                    android:id="@+id/events_tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="?attr/colorAccent"
                    app:tabTextColor="@color/white_70"
                    app:tabTextAppearance="@style/TabsTextAppearance"
                    app:tabSelectedTextColor="@android:color/white"
                    app:tabIndicatorColor="@color/macaroni_and_cheese"
                    tools:layout_height="80dp"/>
        </LinearLayout>

    </androidx.appcompat.widget.Toolbar>

</com.google.android.material.appbar.AppBarLayout>

我的搜索视图样式(@ style / OrganizationSearchView):

<style name="OrganizationSearchView" parent="Widget.AppCompat.SearchView">
    <item name="android:textSize">14sp</item>
    <item name="android:background">@android:color/white</item>
    <item name="android:textColor">@color/black_40</item>
</style>

如何删除光标上的白色背景色?例如使其透明

2 个答案:

答案 0 :(得分:0)

android:background风格的OrganizationSearchView更改为透明。

<item name="android:background">@android:color/transparent</item>

然后按如下所示将android:background="@android:color/white"添加到您的SearchView

<androidx.appcompat.widget.SearchView
    android:background="@android:color/white"
    android:id="@+id/organization_search_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/OrganizationSearchView"
    app:queryBackground="@android:color/transparent"
    app:submitBackground="@android:color/transparent"
    app:iconifiedByDefault="false"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:elevation="8dp"
    app:searchIcon="@drawable/ic_search"
    app:voiceIcon="@drawable/ic_mic"/>

enter image description here

答案 1 :(得分:0)

您可以创建自定义的ThemedSearchView

class ThemedSearchView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
, defTheme: Int = R.style.CustomSearchView
) : SearchView(ContextThemeWrapper(context, defTheme), attrs, defStyleAttr)

您可以将自己的主题仅应用于SearchView 该主题应具有

<item name="android:background">@color/transparent</item>

您可以选择其他颜色,但是光标背景现在将变为透明。