【问题标题】:Android AppCompat SearchView EditText missing bottom line on pre-lollipopAndroid AppCompat SearchView EditText 在棒棒糖前缺少底线
【发布时间】:2015-09-16 00:20:06
【问题描述】:

我正在尝试在我的布局中使用 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,但它在 pre-lollipop 上看起来不同。 EditText 在棒棒糖之前的设备中缺少底部边框。

Lollipop Search 正确显示边框:

棒棒糖搜索前显示无边框:

我的主题是基本的:

    <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>

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

【问题讨论】:

  • 在升级到最新的支持库后发现了同样的问题。以前的版本没有这个问题。继续寻找解决方案。
  • 啊,那可以解释了,因为我没有旧版本,所以我上周才添加了设计库。 :-( 如果您找到解决方案,请告诉我。谢谢

标签: android android-edittext searchview android-appcompat


【解决方案1】:

根据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);

【讨论】:

  • 从支持库版本 25.0.0 开始,必须为不属于工具栏的 SearchView 调用 ((View) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text).getParent()).setBackgroundResource(0);。
【解决方案2】:

更新:对于 Kotlin + Androidx

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 2015-12-24
    • 1970-01-01
    • 2016-02-11
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多