删除操作栏中“搜索视图”图标中的额外空间

时间:2013-12-20 11:20:37

标签: android android-actionbar

我正致力于在API级别11及更高版本中自定义Android Actionbar。我有一个Actionbar的自定义视图,其中我有一个带有其他图标的SearchView小部件。但是当搜索视图处于图标形状(而不是扩展形式)时,它需要的空间超过所需的空间(如下面的红色所示)。

enter image description here

如果我将我的图标更改为黑色图像,则会显示以下结果:

enter image description here

我已经浏览了搜索视图的xml布局,并尝试通过访问搜索视图中的各个视图来减少此填充,但空间不会被删除。我为此编写的代码如下:

 searchView.setBackgroundColor(Color.RED);
    searchView.setPadding(0, 0, 0, 0);

    searchView.setIconifiedByDefault(true);
    int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
    View searchPlate = searchView.findViewById(searchPlateId);
    searchPlate.setBackgroundColor(Color.BLUE);
    searchPlate.setPadding(0,0,0,0);

    int searchTextId = searchPlate.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
    final TextView searchText = (TextView) searchPlate.findViewById(searchTextId);

    searchText.setPadding(0,0,0,0);
    searchText.setBackgroundColor(Color.GRAY);

    int searchImgId = getResources().getIdentifier("android:id/search_button", null, null);
    ImageView v = (ImageView) searchView.findViewById(searchImgId);
    v.setBackgroundDrawable(null);
    v.setPadding(0, 0, 0, 0);
    v.setImageResource(R.drawable.search);

我们可以这样做吗?我注意到一个问题是搜索视图xml布局使用了padding.Can是什么原因?

我看过很多关于自定义Actionbar和搜索视图的帖子,但是没有人完全回答我的问题。

请建议。

1 个答案:

答案 0 :(得分:0)

可能是您的搜索图标图片有更多的宽度和高度。在任何图像编辑工具(如photoshop)中打开图像并查看图像大小,并尝试缩小图像宽度和高度,以及图像看起来很完美。

<强>更新
我认为这个问题背后的原因是ActionBar按钮或图标的默认值为android:minWidth,这是56dip,所以你需要改变它。

我希望它会有所帮助!!