【问题标题】:How to change toolbar menu item background color?如何更改工具栏菜单项背景颜色?
【发布时间】:2017-09-22 11:39:28
【问题描述】:

我需要一种方法来更改菜单项的背景颜色,就像 twitter 应用程序在全屏模式下显示图片之前所做的那样。

【问题讨论】:

  • 你想要这两个圆形图像作为菜单吗?
  • 它是一个菜单项吗?还是标签?
  • @Ankita 是的,两个圆形图像
  • @YamenNassif 菜单项

标签: android material-design toolbar menuitem


【解决方案1】:

您可以获取项目并将其作为 MenuItem,然后您可以使用 setActionView 来使用您必须在之前膨胀的布局 xml 文件,如下所示:

MenuItem alerts;

然后在你的 onCreateOptionsMenu 上:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        alerts = menu.findItem(R.id.alerts);
        ...

然后在任何你需要的地方:

View view = getLayoutInflater().inflate(R.layout.notification_badge, null);
    view.setOnClickListener(new View.OnClickListener() {
        @Override
            public void onClick(View v) {
                startActivity(new Intent(v.getContext(), NotificationsActivity.class));
            }
        });

最后:

alerts.setActionView(view);

【讨论】:

    【解决方案2】:

    您需要在 res 文件夹中创建一个包颜色,在颜色包中创建一个 XML 文件,如下所示:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:color="@color/colorWhite" />
        <item android:color="@color/colorLightGrey"  />
    </selector>
    

    此 xml 会将您的项目设为白色,否则当它们被选择为灰色时。

    要使用此文件,您只需将其添加到底部导航视图:

    app:itemIconTint="@color/nav_item_state_list"
    app:itemTextColor="@color/nav_item_state_list"
    

    nav_item_state_list 就是上面的xml文件。

    【讨论】:

      【解决方案3】:

      您遇到创建自定义标签图标的最佳示例如下

      public class MainActivity extends AppCompatActivity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
      
              viewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager()));
      
              TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
              tabLayout.setupWithViewPager(viewPager);
      
              TabLayout.Tab tabCall = tabLayout.getTabAt(0);
              tabCall.setIcon(R.drawable.selector_call);
      
              TabLayout.Tab tabHeart = tabLayout.getTabAt(1);
              tabHeart.setIcon(R.drawable.selector_heart);
      
              TabLayout.Tab tabContacts = tabLayout.getTabAt(2);
              tabContacts.setIcon(R.drawable.selector_contacts);
          }
      
          class TabPagerAdapter extends FragmentPagerAdapter {
      
              public TabPagerAdapter(FragmentManager fm) {
                  super(fm);
              }
      
              @Override
              public int getCount() {
                  return 3;
              }
      
              @Override
              public Fragment getItem(int position) {
      
                  switch (position) {
                      case 0:
                          return new CallFragment();
                      case 1:
                          return new HeartFragment();
                      case 2:
                          return new ContactsFragment();
                  }
      
                  return null;
              }
          }
      }
      

      使用选择器:

      <selector xmlns:android="http://schemas.android.com/apk/res/android">
      
          <item
              android:state_selected="true"
              android:drawable="@drawable/contacts_selected" />
      
          <item
              android:state_selected="false"
              android:drawable="@drawable/contacts_unselected" />
      </selector>
      

      更多详情参考:

      https://www.androidhive.info/2015/09/android-material-design-working-with-tabs/

      【讨论】:

      • 我不需要标签,我需要为两个菜单项更改背景
      • 菜单将选择器设置为图像资源,并将彩色图像识别为已选择,将灰色识别为已选择 false
      • 我说的是背部和 3 点图标
      猜你喜欢
      • 2015-05-19
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 2011-02-26
      相关资源
      最近更新 更多