我手上有一个奇怪的问题。我需要能够垂直居中SearchView小部件的提示文本,以便它与放大镜和关闭图标对齐。
这是我到目前为止的一小部分:
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。但没有任何结果。
答案 0 :(得分:0)
我觉得在这个项目中断几个月之后我应该回答我自己的问题。我问了一个错误的问题,并且应该意识到在上面的评论“放大镜是一个ImageSpan,所以是的,它与提示文本相关联。”
对此的真正答案是,对齐图像范围内的文本。而且有一个答案!链接位于:Align text around ImageSpan center vertical