如何在不移动放大镜的情况下仅对齐SearchView的提示文本?

时间:2016-11-21 01:24:23

标签: java android searchview

我手上有一个奇怪的问题。我需要能够垂直居中SearchView小部件的提示文本,以便它与放大镜和关闭图标对齐。

This is what the SearchView currently looks like. Notice how the text view is vertically off centered in comparison to the magnifying glass and the x icon

这是我到目前为止的一小部分:

SearchView sv = (SearchView) view.findViewById(R.id.search);

int id = sv.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); 
int searchPlate = sv.getContext().getResources().getIdentifier("android:id/search_plate", null, null); 
int searchMagIcon = sv.getContext().getResources().getIdentifier("android:id/search_mag_icon", null, null); 
ImageView magIcon = (ImageView) sv.findViewById(searchMagIcon); View searchPlateView = sv.findViewById(searchPlate); 
EditText searchText = (EditText) sv.findViewById(id); searchText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);

//searchText.setHint("Some test hint text here"); 
searchPlateView.setBackgroundColor(Color.WHITE); 
searchText.setHintTextColor(Color.parseColor("#D8D8D8")); 
sv.setIconified(false); 
sv.clearFocus();

在注释掉的行中,我发现这与右边的关闭图标完全对齐,然而,这摆脱了放大镜图标。我尝试过使用本文http://nlopez.io/how-to-style-the-actionbar-searchview-programmatically/

中概述的反射

然而,这会移动提示文本和放大镜,并做了一些其他奇怪的事情。根据我的观察,似乎放大镜实际上与提示文本有关,虽然在上面的代码中(我已经从android代码库中搜索过),放大镜似乎是它自己的东西?我试图玩它,例如从放大镜id创建一个ImageView。但没有任何结果。

1 个答案:

答案 0 :(得分:0)

我觉得在这个项目中断几个月之后我应该回答我自己的问题。我问了一个错误的问题,并且应该意识到在上面的评论“放大镜是一个ImageSpan,所以是的,它与提示文本相关联。”

对此的真正答案是,对齐图像范围内的文本。而且有一个答案!链接位于:Align text around ImageSpan center vertical