如何在具有可绘制背景的搜索视图上删除下划线

Posted

技术标签:

【中文标题】如何在具有可绘制背景的搜索视图上删除下划线【英文标题】:How to remove underline on searchview with drawable background 【发布时间】:2020-07-24 11:13:20 【问题描述】:

Snapshot from emulator

我怎样才能去掉如图所示的下划线? 将其设置为透明或更改背景无济于事。

已经尝试过这些解决方案:How to remove white underline in a SearchView widget in Toolbar android

将样式更改为 actionbar-searchview 和以编程方式。更改查询背景的问题是它会忽略我已经设置的可绘制背景。

    <SearchView
    android:id="@+id/searchViewBar"
    android:layout_
    android:layout_
    android:background="@drawable/rounded_corner"
    android:focusable="true"
    android:queryHint=" "
    />

【问题讨论】:

这好像是抬高,你试过吗? 没有使用任何海拔。添加了一些来测试和查看差异,它与行明显不同。 如果你想让搜索的字符变成彩色的,请看我的问答:***.com/questions/59628149/… 你能把结果的图片发张吗? 【参考方案1】:

您需要更改声明此视图的 search_edit_frame、search_plate 和 search_bar。

    int searchFrameId = searchView.getContext().getResources().getIdentifier("android:id/search_edit_frame", null, null);
View searchFrame = searchView.findViewById(searchFrameId);
searchFrame.setBackgroundResource(R.drawable.rounded_corner);

int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
View searchPlate = findViewById(searchPlateId);
searchPlate.setBackgroundResource(R.drawable.rounded_corner);

int searchBarId = searchView.getContext().getResources().getIdentifier("android:id/search_bar", null, null);
View searchBar = findViewById(searchBarId);
searchBar.setBackgroundResource(R.drawable.rounded_corner);

【讨论】:

我只需要 searchPlate 的行!谢谢。没有办法在 XML 中做到这一点?【参考方案2】:

试试下面的代码:

View v = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
v.setBackgroundColor(Color.parseColor("here give actionbar color code"));

【讨论】:

【参考方案3】:
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
View searchPlate = findViewById(searchPlateId);
searchPlate.setBackgroundResource(0);

这会从搜索板中删除任何类型的背景。

【讨论】:

以上是关于如何在具有可绘制背景的搜索视图上删除下划线的主要内容,如果未能解决你的问题,请参考以下文章

具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确

具有图层列表背景可绘制的自定义视图呈现黑屏

如何在 CALayer 上绘制具有原生外观的状态项背景

聚焦时如何隐藏edittext的线条颜色

如何在 PDF Kit 的 PDFView 背景上绘制文本

如何在 CBitmap 上使用具有透明背景的 CDC 绘制文本?