Android自定义操作栏在某些设备中不显示导航抽屉图标

时间:2014-08-29 19:32:16

标签: android android-layout

对于我的应用,我使用的是一个NavigationDrawer菜单,并且它运行正常。此时我已经创建了自定义操作栏布局,只是建议在操作栏中设置一个图标。 问题是,在某些设备中,NavigationDrawer的图标显然没有显示我的自定义ActionBar布局,但它显示我是否不应用我的自定义ActionBar布局。 在我的Android 4.4.2上,它运行正常。我已尝试过4.1.2和4.3以及未显示的图标。

这是我的ActionBar布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ActionBarWrapper"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/actionbar_centered_icon"
        android:layout_width="150dp"
        android:layout_height="wrap_content" />

</RelativeLayout>

这里有我的Activity上的行,它们为操作栏设置我的自定义布局,以及实现navigationDrawer的代码:

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    getActionBar().setCustomView(R.layout.actionbar_centered_icon);
    ImageView actionBarCenteredIcon = (ImageView) findViewById(R.id.actionbar_centered_icon);
    actionBarCenteredIcon.setImageResource(R.drawable.vidytape_text);

    // Hide App icon
    // getActionBar().setDisplayHomeAsUpEnabled(false);
    getActionBar().setDisplayHomeAsUpEnabled(true);

    // Enable user to open menu from the button on action bar
    getActionBar().setHomeButtonEnabled(true);

    // Remove app title from action bar
    getActionBar().setDisplayShowTitleEnabled(false);

    // Set menu ic drawer as icon
    /*
     * if (lang.equalsIgnoreCase("deutsch")){
     * getActionBar().setIcon(R.drawable.label_home_de); } else {
     */
    getActionBar().setIcon(R.drawable.vidytape_text);
    // }

    ColorDrawable actionBarColor = new ColorDrawable(
            Color.parseColor("#3498db"));
    getActionBar().setBackgroundDrawable(actionBarColor);

    // Menu behavior -- Toggle
    mDrawerToggle = new ActionBarDrawerToggle((Activity) this,
            mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open,
            R.string.drawer_close) {

        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); // creates call to
                                        // onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()

            //Close keyboard
            viewsSearchField = (EditText) findViewById(R.id.views_search);
            nicesSearchField = (EditText) findViewById(R.id.nices_search);
            newestSearchField = (EditText) findViewById(R.id.newest_search);

            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(viewsSearchField.getWindowToken(), 0);
            imm.hideSoftInputFromWindow(nicesSearchField.getWindowToken(), 0);
            imm.hideSoftInputFromWindow(newestSearchField.getWindowToken(), 0);
        }
    }; // End of menu behavior

    mDrawerLayout.setDrawerListener(mDrawerToggle);

任何人都知道这里可能出现什么问题?

我找到了解决方案

使其适用于SDK&lt; 19和19也是,我添加了以下两行代码:

getActionBar().setDisplayShowHomeEnabled(true);

    ColorDrawable actionBarIconColor = new ColorDrawable(Color.TRANSPARENT);
    getActionBar().setIcon(actionBarIconColor);

0 个答案:

没有答案