1
我有一個微調器(sherlock)放置在操作欄中,顯示5個選項供用戶選擇,如下所示。目前爲止一切都很好。但我希望微調器在動作欄上對齊。微調者的物品也應該居中對齊。任何想法如何做到這一點?Android - 列表導航樣式
我有一個微調器(sherlock)放置在操作欄中,顯示5個選項供用戶選擇,如下所示。目前爲止一切都很好。但我希望微調器在動作欄上對齊。微調者的物品也應該居中對齊。任何想法如何做到這一點?Android - 列表導航樣式
您需要創建自己的微調控制器適配器。
你可以得到你想要的東西,這裏有一個例子:
下面是使用自定義的微調代碼:
Context context = getSupportActionBar().getThemedContext();
ArrayList<AbMenu> data = new ArrayList<AbMenu>();
data.add(new AbMenu(isDark ? R.drawable.ic_action_spinner_partiemultidark : R.drawable.ic_action_spinner_partiemulti, getString(R.string.m1), 1));
data.add(new AbMenu(isDark ? R.drawable.ic_action_spinner_partiemultidark : R.drawable.ic_action_spinner_partiemulti, getString(R.string.m8), 2));
data.add(new AbMenu(isDark ? R.drawable.ic_action_spinner_partiedark : R.drawable.ic_action_spinner_partie, getString(R.string.s31), 5));
data.add(new AbMenu(isDark ? R.drawable.ic_action_spinner_savedark : R.drawable.ic_action_spinner_save, getString(R.string.m2), 3));
data.add(new AbMenu(isDark ? R.drawable.ic_action_spinner_partiehelpdark : R.drawable.ic_action_spinner_partiehelp, getString(R.string.m3), 4));
AbMenuAdapter adapter = new AbMenuAdapter(context, R.layout.ab_spinner_item, data);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getSupportActionBar().setListNavigationCallbacks(adapter, this);
,我用它來填充類適配器。
public class AbMenu {
public int icon;
public String title;
public int id;
public AbMenu() {
super();
}
public AbMenu(int icon, String title, int id) {
super();
this.icon = icon;
this.title = title;
this.id = id;
}
}
適配器(它是一個像一個TextView旁)使用自定義佈局:
public class AbMenuAdapter extends BaseAdapter implements SpinnerAdapter {
Context context;
int layoutResourceId;
ArrayList<AbMenu> data;
LayoutInflater inflater;
public AbMenuAdapter(Context a, int textViewResourceId, ArrayList<AbMenu> data) {
// super(a, textViewResourceId, data);
this.data = data;
inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.context = a;
this.layoutResourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = inflater.inflate(layoutResourceId, null);
}
final AbMenu item = data.get(position);
if (item != null) {
((android.widget.TextView) v.findViewById(R.id.textViewSpinner)).setText(item.title);
((ImageView) v.findViewById(R.id.imageViewSpinner)).setImageResource(item.icon);
}
return v;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
v = inflater.inflate(layoutResourceId, null);
}
final AbMenu item = data.get(position);
if (item != null) {
((android.widget.TextView) v.findViewById(R.id.textViewSpinner)).setText(item.title);
((android.widget.TextView) v.findViewById(R.id.textViewSpinner)).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
((ImageView) v.findViewById(R.id.imageViewSpinner)).setImageResource(item.icon);
}
return v;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
和XML文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="8dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="8dp"
android:gravity="fill_horizontal" >
<ImageView
android:id="@+id/imageViewSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:contentDescription="@string/empty"
android:padding="4dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textViewSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:layout_marginRight="16dp"
android:layout_toRightOf="@+id/imageViewSpinner"
android:text="@string/empty"
android:ellipsize="end"
android:singleLine="true" />
</RelativeLayout>
謝謝。正如你可能知道我已經從sherlock動作欄中獲得這個http://pastebin.com/uk6qHgY7。我可以在庫中進行一些更改,以使微調對齊。例如:設置填充等...? –
我想你可能會。轉到ActionBarSherlock項目並在res/layout(和layout-v14)文件夾中打開文件sherlock_spinner_item.xml。這是默認使用的那個。這是一個簡單的文本視圖,你只需要添加'gravity =「center」'它應該可以工作。它的工作原理是 –
。但我希望整個微調器都移到完整的右端。那可能嗎? –