0
我正在實現一個非常簡單的例子NavigationDrawer
。這個例子工作正常,但我有一個奇怪的問題。 NavigationDrawer的圖標(通常爲ic_drawer
)不會顯示在ActionBar
中。我試過使用不同的圖標圖像,但沒有達到預期的效果。這是代碼。該項目只有一個名爲MainActivity.java
的活動。NavigationDrawer圖標不顯示
public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private ListView mListView;
private ActionBarDrawerToggle mDrawerToggle;
private String[] array = new String[] { "Hello", "hola", "namaste",
"salaam" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
mListView = (ListView) findViewById(R.id.list);
getActionBar().setDisplayHomeAsUpEnabled(true);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_dropdown_item_1line, array);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Toast.makeText(getApplicationContext(), array[arg2],
Toast.LENGTH_SHORT).show();
}
});
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.open, R.string.close) {
@Override
public void onDrawerClosed(View drawerView) {
// TODO Auto-generated method stub
invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView) {
// TODO Auto-generated method stub
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
@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 boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (mDrawerToggle.onOptionsItemSelected(item))
return true;
return super.onOptionsItemSelected(item);
}
}
如果我註釋掉的代碼getActionBar().setDisplayHomeAsUpEnabled(true);
行,代碼停止工作,這意味着NavigationDrawer
不會打開。
以供參考,該活動的XML佈局:
activity_main.xml中
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="change aaaega, hum laaenge" />
<ListView
android:id="@+id/list"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice" />
</android.support.v4.widget.DrawerLayout>
有什麼建議?
謝謝。
嘗試'getActionBar()setDisplayHomeAsUpEnabled(真); getActionBar()setHomeButtonEnabled(真);' – Euporie
這並沒有解決的問題。如果我想將最低版本的應用程序設置爲API 11而不是14,該怎麼辦? – Rajat
您可以導入android.support.v7,並使用'ActionBarActivity'而不是'Activity'。 'getActionBar()'也應該替換爲'getSupportActionBar()'。 Support.v7只需要API級別7。 – Euporie