我手头有一个奇怪的问题。我需要能够将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。但是什么也没发生。

最佳答案

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

真正的答案是,将图像跨文本对齐。有一个答案!链接在这里:Align text around ImageSpan center vertical

08-06 14:01