Android AppCompat SearchView EditText在前棒棒糖上缺少底线

时间:2015-06-29 13:44:43

标签: android android-edittext searchview appcompat-v7-r22.1 appcompat-v7-r21

我正在尝试在布局中使用SearchView(不在ToolBar或ActionBar中)。

<FrameLayout android:layout_width="0dp" android:layout_weight="50" android:layout_height="wrap_content" >
    <android.support.v7.widget.SearchView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|left" style="@style/MySearchViewStyle" />
  </FrameLayout>

我正在使用AppCompat,但它在棒棒糖前看起来有所不同。 EditText缺少pre-lollipop设备的底部边框。

Lollipop Search正确显示边框: Lollipop SearchView with bottom border

预棒棒糖搜索显示无边框: Pre-lollipop SearchView with NO bottom border

我的主题是基本的:

    <style name="Theme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- TOOLBAR -->
     <item name="android:windowNoTitle">true</item>
     <item name="windowActionBar">false</item>
     <item name="windowNoTitle">true</item>
     <!-- Search -->
     <item name="searchViewStyle">@style/MySearchViewStyle</item>
     <item name="android:searchViewStyle">@style/MySearchViewStyle</item>
     <!-- COLOURS -->
     <item name="colorPrimary">@color/primary</item>
     <item name="colorPrimaryDark">@color/primary_dark</item>
     <item name="colorAccent">@color/accent</item>
  </style>
  <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
     <item name="android:editTextStyle">@style/EditText</item>
     <item name="editTextStyle">@style/EditText</item>
  </style>
  <style name="EditText">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:inputType">text</item>
    <item name="android:cursorVisible">true</item>
    <item name="android:maxLength">1000</item>
    <item name="android:selectAllOnFocus">true</item>
    <item name="android:paddingTop">4dp</item>
  </style>

任何有助于我的风格保持一致的帮助都非常感谢。

2 个答案:

答案 0 :(得分:6)

根据https://github.com/android/platform_frameworks_support/blob/master/v7/appcompat/res/layout/abc_search_view.xml

的源代码

search_src_text视图的背景设置为@null

要获得我使用的底线

searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text).setBackgroundResource(R.drawable.abc_textfield_search_default_mtrl_alpha);

答案 1 :(得分:0)

更新:对于 Kotlin + Androidx

searchView.findViewById<EditText>(androidx.appcompat.R.id.search_src_text).setBackgroundResource(R.drawable.abc_textfield_search_default_mtrl_alpha)