Android 没有看到 ActionBarDrawerToggle
Android don't see ActionBarDrawerToggle
我正在尝试将 DrawerLayout 添加到我的应用程序中。这是我的布局:
<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">
<ListView
android:id="@+id/list"
android:listSelector="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"/>
</android.support.v4.widget.DrawerLayout>
和activity代码:
public class HomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
setupNavigationDrawer();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}
private void setupNavigationDrawer() {
DrawerLayout mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.string.hello_world,
R.string.hello_world
) {
public void onDrawerClosed(View view) {
//Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
}
public void onDrawerOpened(View drawerView) {
//Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
}
}
我可以从左侧轻扫并查看我的抽屉菜单,但我没有在 activity 标题左侧看到任何切换抽屉菜单的 ActionBar 按钮。我如何向我的 activity 添加类似 "hamburger" 按钮的东西?
mDrawerToggle = new ActionBarDrawerToggle(this,Drawer,toolbar,R.string.openDrawer,R.string.closeDrawer){
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
Drawer.setDrawerListener(mDrawerToggle);// use this line to set Drawer toggle
您是否尝试过输入以下语句:
//calling sync state is necessary or else your hamburger icon won't show up
mDrawerToggle.syncState();
我已经设置了以下 ic_menu(附加的 png 图片,所以您可能看不到)可绘制作为指示器...它非常适合我。
/**
* Setting of Actionbar
*/
private void setupToolbar() {
final ActionBar ab = getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_menu);
ab.setDisplayHomeAsUpEnabled(true);
}
参见以下函数:
/**
* In case if you require to handle drawer open and close states
*/
private void setupActionBarDrawerToggle() {
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
) {
/**
* Called when a drawer has settled in a completely closed state.
*/
public void onDrawerClosed(View view) {
//Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
}
/**
* Called when a drawer has settled in a completely open state.
*/
public void onDrawerOpened(View drawerView) {
//Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
}
};
//Setting the actionbarToggle to drawer layout
mDrawerLayout.setDrawerListener(mDrawerToggle);
//calling sync state is necessary or else your hamburger icon wont show up
mDrawerToggle.syncState();
}
您最好使用支持包中的 NavigationView。更易于使用,代码更少等
http://android-developers.blogspot.no/2015/05/android-design-support-library.html
http://antonioleiva.com/navigation-view/
https://developer.android.com/reference/android/support/design/widget/NavigationView.html
我正在尝试将 DrawerLayout 添加到我的应用程序中。这是我的布局:
<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">
<ListView
android:id="@+id/list"
android:listSelector="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"/>
</android.support.v4.widget.DrawerLayout>
和activity代码:
public class HomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
setupNavigationDrawer();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
}
private void setupNavigationDrawer() {
DrawerLayout mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.string.hello_world,
R.string.hello_world
) {
public void onDrawerClosed(View view) {
//Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
}
public void onDrawerOpened(View drawerView) {
//Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
}
}
我可以从左侧轻扫并查看我的抽屉菜单,但我没有在 activity 标题左侧看到任何切换抽屉菜单的 ActionBar 按钮。我如何向我的 activity 添加类似 "hamburger" 按钮的东西?
mDrawerToggle = new ActionBarDrawerToggle(this,Drawer,toolbar,R.string.openDrawer,R.string.closeDrawer){
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
Drawer.setDrawerListener(mDrawerToggle);// use this line to set Drawer toggle
您是否尝试过输入以下语句:
//calling sync state is necessary or else your hamburger icon won't show up
mDrawerToggle.syncState();
我已经设置了以下 ic_menu(附加的 png 图片,所以您可能看不到)可绘制作为指示器...它非常适合我。
/**
* Setting of Actionbar
*/
private void setupToolbar() {
final ActionBar ab = getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_menu);
ab.setDisplayHomeAsUpEnabled(true);
}
参见以下函数:
/**
* In case if you require to handle drawer open and close states
*/
private void setupActionBarDrawerToggle() {
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.string.drawer_open, /* "open drawer" description */
R.string.drawer_close /* "close drawer" description */
) {
/**
* Called when a drawer has settled in a completely closed state.
*/
public void onDrawerClosed(View view) {
//Snackbar.make(view, R.string.drawer_close, Snackbar.LENGTH_SHORT).show();
}
/**
* Called when a drawer has settled in a completely open state.
*/
public void onDrawerOpened(View drawerView) {
//Snackbar.make(drawerView, R.string.drawer_open, Snackbar.LENGTH_SHORT).show();
}
};
//Setting the actionbarToggle to drawer layout
mDrawerLayout.setDrawerListener(mDrawerToggle);
//calling sync state is necessary or else your hamburger icon wont show up
mDrawerToggle.syncState();
}
您最好使用支持包中的 NavigationView。更易于使用,代码更少等
http://android-developers.blogspot.no/2015/05/android-design-support-library.html
http://antonioleiva.com/navigation-view/
https://developer.android.com/reference/android/support/design/widget/NavigationView.html