Android 应用程序图标不存在';使用Theme.appCompat.light.DarkActionBar时,不会出现在操作栏中

Android 应用程序图标不存在';使用Theme.appCompat.light.DarkActionBar时,不会出现在操作栏中,android,android-actionbar,icons,android-appcompat,Android,Android Actionbar,Icons,Android Appcompat,我正在跟随一个教程使用支持的library V7制作一个导航抽屉,所以我不得不使用Theme.appCompat.light.DarkActionBar作为应用程序主题 问题是: 应用程序图标不会出现在操作栏的默认位置 抽屉图标向右移动 这是我的密码: package com.tutorial18nav.tutorial18nav; import android.content.res.Configuration; import android.os.Bundle; import androi

我正在跟随一个教程使用支持的library V7制作一个导航抽屉,所以我不得不使用Theme.appCompat.light.DarkActionBar作为应用程序主题

问题是:

  • 应用程序图标不会出现在操作栏的默认位置
  • 抽屉图标向右移动
  • 这是我的密码:

    package com.tutorial18nav.tutorial18nav;
    
    import android.content.res.Configuration;
    import android.os.Bundle;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class MainActivity extends ActionBarActivity implements OnItemClickListener {
    
        private DrawerLayout mDrawerLayout;
        private ListView mDrawerlist;
        String[] sections;
        private android.support.v4.app.ActionBarDrawerToggle mDrawerToggle;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
            mDrawerlist = (ListView) findViewById(R.id.left_drawer);
            sections = getResources().getStringArray(R.array.sections);
            mDrawerlist.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, sections));
            mDrawerlist.setOnItemClickListener(this);
            mDrawerToggle = new android.support.v4.app.ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
    
                @Override
                public void onDrawerOpened(View drawerView) {
    
                    Toast.makeText(MainActivity.this, "Drawer is opened", Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onDrawerClosed(View drawerView) {
    
                    Toast.makeText(MainActivity.this, "Drawer is closed", Toast.LENGTH_SHORT).show();
                }
            };
            mDrawerLayout.setDrawerListener(mDrawerToggle);
            getSupportActionBar().setHomeButtonEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    
    
        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
    
            super.onPostCreate(savedInstanceState);
            mDrawerToggle.syncState();
        }
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
            Toast.makeText(this, "Section number " + (position + 1) + " has been selected", Toast.LENGTH_SHORT).show();
            selectItem(position);
        }
    
        public void selectItem(int position) {
    
            mDrawerlist.setItemChecked(position, true);
            setTitle(sections[position]);
        }
    
        public void setTitle(String title) {
    
            getSupportActionBar().setTitle(title);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
    
            super.onConfigurationChanged(newConfig);
            mDrawerToggle.onConfigurationChanged(newConfig);
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
    
                return true;
            }
            if(mDrawerToggle.onOptionsItemSelected(item)){
    
                return true;
            }
            return super.onOptionsItemSelected(item);
        }    
    }
    
    package com.tutorial18nav.tutorial18nav;
    导入android.content.res.Configuration;
    导入android.os.Bundle;
    导入android.support.v4.widget.DrawerLayout;
    导入android.support.v7.app.ActionBarActivity;
    导入android.support.v7.app.ActionBarDrawerToggle;
    导入android.view.Menu;
    导入android.view.MenuItem;
    导入android.view.view;
    导入android.widget.AdapterView;
    导入android.widget.AdapterView.OnItemClickListener;
    导入android.widget.ArrayAdapter;
    导入android.widget.ListView;
    导入android.widget.Toast;
    公共类MainActivity扩展了ActionBarActivity实现了McClickListener{
    私人抽屉布局mDrawerLayout;
    私有列表视图mDrawerlist;
    字符串[]段;
    私有android.support.v4.app.ActionBarDrawerToggle mDrawerToggle;
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
    mDrawerlist=(ListView)findViewById(R.id.left\u抽屉);
    sections=getResources().getStringArray(R.array.sections);
    setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,sections));
    mDrawerlist.setOnItemClickListener(this);
    mDrawerToggle=new android.support.v4.app.ActionBarDrawerToggle(这个,mDrawerLayout,R.drawerable.ic\u抽屉,R.string.drawer\u打开,R.string.drawer\u关闭){
    @凌驾
    打开图纸上的公共空白(视图抽屉视图){
    Toast.makeText(MainActivity.this,“抽屉已打开”,Toast.LENGTH_SHORT.show();
    }
    @凌驾
    图纸上的公共空白已关闭(视图抽屉视图){
    Toast.makeText(MainActivity.this,“抽屉已关闭”,Toast.LENGTH_SHORT.show();
    }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    @凌驾
    后期创建时受保护的空(捆绑包savedInstanceState){
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
    }
    @凌驾
    public void onItemClick(AdapterView父对象、视图、整型位置、长id){
    Toast.makeText(此“节号”+(位置+1)+“已被选中”,Toast.LENGTH_SHORT.show();
    选择项目(位置);
    }
    public void selectItem(内部位置){
    mDrawerlist.setItemChecked(位置,true);
    片名(章节[位置]);
    }
    公共无效集合标题(字符串标题){
    getSupportActionBar().setTitle(标题);
    }
    @凌驾
    公共布尔onCreateOptions菜单(菜单){
    //为菜单充气;这会将项目添加到操作栏(如果存在)。
    getMenuInflater().充气(R.menu.main,menu);
    返回true;
    }
    @凌驾
    公共无效OnConfiguration已更改(配置newConfig){
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
    }
    @凌驾
    公共布尔值onOptionsItemSelected(菜单项项){
    //处理操作栏项目单击此处。操作栏将
    //自动处理Home/Up按钮上的点击,只要
    //在AndroidManifest.xml中指定父活动时。
    int id=item.getItemId();
    if(id==R.id.action\u设置){
    返回true;
    }
    如果(MDRAWERTOGLE.onOptionsItemSelected(项目)){
    返回true;
    }
    返回super.onOptionsItemSelected(项目);
    }    
    }
    
    Activity_main.xml:

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </FrameLayout>
    
        <ListView
            android:background="#FF8800"
            android:id="@+id/left_drawer"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="left">
        </ListView>
    
    </android.support.v4.widget.DrawerLayout>
    
    
    
    清单文件:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tutorial18nav.tutorial18nav"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk
        android:minSdkVersion="21"
        android:targetSdkVersion="21" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    
    
    

    Menu.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android"    
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.tutorial18nav.tutorial18nav.MainActivity" >
    
        <item
            android:id="@+id/action_settings"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="@string/action_settings"/>
    
    </menu>