我想问一下 gmail 应用程序中的操作栏。
在主活动中,操作栏(收件箱、已发送等)中有一个微调器,并且没有标题。
我在我的应用程序中尝试过,但应用程序图标和微调器之间的差距比在 gmail 应用程序中更大。
我使标题既不可见又空洞,但差距仍然更大。
我是否必须为操作栏制作自己的视图定义才能达到相同的效果?
非常感谢,马丁
我想问一下 gmail 应用程序中的操作栏。
在主活动中,操作栏(收件箱、已发送等)中有一个微调器,并且没有标题。
我在我的应用程序中尝试过,但应用程序图标和微调器之间的差距比在 gmail 应用程序中更大。
我使标题既不可见又空洞,但差距仍然更大。
我是否必须为操作栏制作自己的视图定义才能达到相同的效果?
非常感谢,马丁
谢谢大家的回答。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
.
创建一个具有正确填充的可绘制对象作为您的操作栏图标。
<?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>
然后只需将其设置为清单中的图标。您应该能够以这种方式调整填充。
减少 的填充Spinner
,更准确地说是View
在. 我刚刚在一个示例项目中尝试过,它显着缩小了差距。getView()
Adapter
添加这一行 spinner.setPadding(0,0,0,0); 打开下拉菜单时隐藏向下箭头图像。