可能重复:
SubMenu Layout Android
是否有以下子菜单看起来像第二个(photoshopped)图像?
目前这是我的子菜单:
这是XML文件:
<menu>
<item android:id="@+id/facebook_icon"
android:title="Share With Facebook"
android:icon="@drawable/ic_menu_facebook" />
<item android:id="@+id/twitter_icon"
android:title="Share With Twitter"
android:icon="@drawable/ic_menu_twitter" />
</menu>
我希望它看起来像这样(如果你有任何想法我会很感激听到他们!):
答案 0 :(得分:1)
是的,有可能。尝试这样的事情: 1.创建用于存储项类型的类
public final class AccountTypesProvider {
public static List<AccountType> accountTypes = Collections.unmodifiableList(Arrays.asList(
new AccountType(AccountType.TWITTER_ACCOUNT, "Twitter", R.drawable.ic_menu_twitter),
new AccountType(AccountType.FACEBOOK_ACCOUNT, "Facebook", R.drawable.ic_menu_facebook)
));
}
2.Create ListAdapter
public final class AccountsTypesListAdapter extends ArrayAdapter<AccountType> {
private Activity context;
private List<AccountType> accountTypes;
public AccountsTypesListAdapter(Activity context, List<AccountType> accountTypes) {
super(context, R.layout.select_account_item, accountTypes);
this.context = context;
this.accountTypes = accountTypes;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View row = inflater.inflate(R.layout.select_account_item, parent, false);
TextView label = (TextView) row.findViewById(R.id.text_item);
label.setText(accountTypes.get(position).title);
ImageView icon = (ImageView) row.findViewById(R.id.icon_item);
icon.setImageResource(accountTypes.get(position).bigIconId);
return row;
}
}
3.Layout for your adapter:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10px"> <ImageView android:id="@+id/icon_item" android:layout_width="wrap_content"
android:layout_height="fill_parent"/>
<TextView android:id="@+id/text_item" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:paddingLeft="10px"
android:paddingTop="5px" android:textStyle="bold"
android:textColor="#000000"/>
</LinearLayout>
4.和你的对话
public static void showSelectAccountTypeDialog(Activity context, String title, OnClickListener dialogListener) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title);
builder.setAdapter(new AccountsTypesListAdapter(context, AccountTypesProvider.accountTypes), dialogListener);
builder.create().show();
}
此代码取自here
答案 1 :(得分:0)
坏消息是上下文菜单不支持图标。
好消息是你可以做些什么,但需要做更多的工作。您可以按照this article说明所需的步骤,也可以轻松使用this one等库。