android:icon和spinner之间的差距

时间:2013-02-28 10:51:17

标签: android android-actionbar spinner space gaps-in-visuals

我想问一下gmail应用程序中的操作栏。

在主活动中,操作栏中有一个微调器(收件箱,已发送等)并且没有标题。

我在我的应用中尝试了这一点,但应用程序图标和微调器之间的差距比gmail应用程序中的差距更大。

我让这个标题既隐形又空洞,但差距仍然更大。

我是否必须为动作栏制作自己的视图定义才能达到同样的效果?

非常感谢, 马丁

4 个答案:

答案 0 :(得分:3)

谢谢大家的回答。 matthias 的答案让我想到了以下解决方案,它就像魅力一样:

public class ZeroPaddingArrayAdapter<T> extends ArrayAdapter<T> {

    public InboxTypeAdapter(Context context, int textViewResourceId, T[] objects) {
        super(context, textViewResourceId, objects);
    }

    public static ArrayAdapter<CharSequence> createFromResource(Context context,
                                                                int textArrayResId, int textViewResId) {
        CharSequence[] strings = context.getResources().getTextArray(textArrayResId);
        return new ZeroPaddingArrayAdapter<CharSequence>(context, textViewResId, strings);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        view.setPadding(
                0,
                    view.getPaddingTop(),
                0,
                view.getPaddingBottom()
        );
        return view;
    }

}

对于纺纱师:

getView() - 获取当前所选项目的视图。 getDropDownView() - 获取微调器打开时显示的视图。

我们只需要减少getView()中的填充。

只需使用此适配器而不是简单的ArrayAdapter

答案 1 :(得分:2)

使用正确的填充创建一个drawable作为操作栏图标。

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/logo"
          android:right="10dp"/>

</layer-list>

然后在清单中设置为您的图标。您应该能够以这种方式调整填充。

答案 2 :(得分:1)

减少Spinner的填充,更准确地说是在View getView()方法中膨胀的布局中Adapter的填充。我只是在一个示例项目中试过这个,它显着缩小了差距。

答案 3 :(得分:0)

添加此行spinner.setPadding(0,0,0,0);打开下拉列表时隐藏向下箭头图像。