簡體   English   中英

如何更改工具欄菜單項的背景色?

[英]How to change toolbar menu item background color?

我需要一種方法來更改菜單項的背景顏色,就像在全屏模式下顯示圖片之前,Twitter應用程序的操作方式一樣。

在此處輸入圖片說明

您可以獲取該項目並將其作為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);

您遇到了創建自定義標簽圖標的最佳示例,如下所示

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/

您需要在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文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM