【问题标题】:Custom SubMenu in Android [duplicate]Android中的自定义子菜单[重复]
【发布时间】:2011-11-26 07:23:22
【问题描述】:

可能重复:
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>

我希望它看起来像这样(如果您有任何想法,我将不胜感激!):

【问题讨论】:

    标签: android xml layout menu icons


    【解决方案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.创建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. 适配器布局:

    <?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

    【讨论】:

      【解决方案2】:

      坏消息是上下文菜单不支持图标。

      好消息是你可以做一些事情,但需要更多的工作。您可以关注this article,它解释了所需的步骤,或者您可以采取简单的方法并使用像this one 这样的库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多