【问题标题】:Toolbar not showing profile icon工具栏不显示个人资料图标
【发布时间】:2018-09-20 23:55:12
【问题描述】:

我的 HomeActivity 中有一个工具栏。我想在工具栏中添加一个配置文件图标。我在包含该项目的菜单文件夹中创建了一个菜单文件,并在活动的 onCreate 中添加了一个 getSupportActionBar。我不知道为什么它仍然没有显示图标。

主活动:

public class HomeScreen extends AppCompatActivity {

    private Toolbar toolbar;
    private DrawerLayout mDrawer;
    private NavigationView nvDrawer;
    private ActionBarDrawerToggle drawerToggle;
    FragmentTransaction fragmentTransaction;
    MaterialSearchView searchView;



    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_home);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        searchView = (MaterialSearchView) findViewById(R.id.search_view);

        // Find our drawer view
        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        nvDrawer = (NavigationView) findViewById(R.id.nvView);
        drawerToggle = new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.drawer_open, R.string.drawer_close);
        mDrawer.addDrawerListener(drawerToggle);
        setupDrawerContent(nvDrawer);
        setFirstItemNavigationView(nvDrawer);


    }

    private void setFirstItemNavigationView(NavigationView navigationView) {

        navigationView.setCheckedItem(R.id.nav_home);
        navigationView.getMenu().performIdentifierAction(R.id.nav_home, 0);
    }

    public void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                selectDrawerItem(menuItem);
                return true;
            }
        });

    }

    private void selectDrawerItem(MenuItem menuItem) {

        switch (menuItem.getItemId()) {
            case R.id.nav_home:
                fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.main_container, new NewDiscoveryScreen());
                fragmentTransaction.commit();
                menuItem.setChecked(true);
                mDrawer.closeDrawers();
                break;
            case R.id.nav_setting:
                fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.main_container, new SettingsFragment());
                fragmentTransaction.commit();
                menuItem.setChecked(true);
                mDrawer.closeDrawers();
                break;
            case R.id.nav_profile:
                fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.main_container, new DiscoveryScreen());
                fragmentTransaction.commit();
                menuItem.setChecked(true);
                mDrawer.closeDrawers();
                break;
            default:
                fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.main_container, new NewDiscoveryScreen());
                fragmentTransaction.commit();
                menuItem.setChecked(true);
                mDrawer.closeDrawers();
        }

    }




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

    @Override
    protected void onPostCreate(@Nullable Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        drawerToggle.syncState();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_profile:

                break;
            default:
                break;
        }
        return true;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }
}

样式.xml:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorAccent</item>
        <item name="colorPrimaryDark">@color/colorAccent</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="cardViewStyle">@style/CardView</item>
        <item name="windowActionBar">false</item>
    </style>

    <style name="ToolBarStyle" parent="Theme.AppCompat">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="actionMenuTextColor">@android:color/white</item>
    </style>

    <style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">@color/colorPrimaryDark</item>
        <item name="android:textColorPrimary">@color/color_txtBlack</item>
        <item name="android:background">@color/color_dark_grey</item>
    </style>

menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_profile"
        android:title=""
        android:icon="@drawable/profile"
        app:showAsAction="always" />
</menu>

谁能告诉我我错过了什么。

【问题讨论】:

  • 这个文件的内容是什么? drawable/profile你确定它可以作为一个图标吗?

标签: android android-toolbar


【解决方案1】:

看看你的代码R.menu.menu_main。你写的名字对吗?
menu.xml 还是 menu_main.xml。我没有看到任何其他错误。

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
 //---------------This is your Code ------------------
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

【讨论】:

  • 抱歉给您带来了困惑,但它是 menu_main。
  • 你是否在 XML 中添加了工具栏
  • 和IN Activity import android.support.v7.widget.Toolbar;
猜你喜欢
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
相关资源
最近更新 更多