标签: drawerlayout

打开DrawerLayout,执行操作,然后关闭它

因此,我希望以这样的方式为DrawerLayout设置动画,使其打开,将一个项目添加到其中的菜单中,然后将其关闭.

我尝试了很多东西,但问题是"打开"和"关闭"命令之间没有延迟(或者至少没有明显的延迟),因此动画永远不会触发.

我真的不想使用任意长度的'post delayed',因为这看起来很脏.我已经尝试在监听器中手动覆盖"onDrawerOpened()" - 这已经工作了,但是在执行操作后我无法关闭它,因为你无法从内部关闭它(意思是,如果'closeDrawer(布局) )'方法是从侦听器本身的任何子线程调用的,它将得到运行时错误).

所以我拥有的是:

 _drawerToggle = new ActionBarDrawerToggle(MainActivity.this, _drawerLayout, R.drawable.ic_drawer, R.string.drawerOpen, R.string.drawerClose)
 {
      /** Called when a drawer has settled in a completely closed state. */
      public void onDrawerClosed(View view) {
           getActionBar().setTitle(_title);
      }

       /** Called when a drawer has settled in a completely open state. */
      public void onDrawerOpened(View drawerView) {
           myAction(); //My action                            
           //If I try to invoke 'drawerClose()' here or in my action, a runtime error occurs
      }
 };
 _drawerLayout.setDrawerListener(_drawerToggle);
 _drawerLayout.openDrawer(_mainFrame);
 //If I invoke …
Run Code Online (Sandbox Code Playgroud)

animation android drawerlayout

0
推荐指数
1
解决办法
7111
查看次数

如何在android中的活动中使用DrawerLayout时处理Back按钮?

DrawerLayout在我的申请中使用.现在,当我按下后退按钮时,它首先关闭DrawerLayout,需要再次单击后退按钮,然后它将重定向到上一个屏幕.

但我想避免这个DrawerLayout关闭后退按钮.任何人都知道如何防止这种情况?

请告诉我我被困在这上面的方式.

提前致谢.

android drawerlayout

0
推荐指数
1
解决办法
4048
查看次数

为什么isDrawerVisible总是显示为false

所以,我有这个

btn_menu.setOnClickListener(new View.OnClickListener() {
@Override

        public void onClick(View v) {if(mDrawerLayout.isDrawerVisible(R.id.drawer_layout) == false) {
                mDrawerLayout.openDrawer(mDrawerList);
                Log.d("False", "" + mDrawerLayout.isDrawerOpen(R.id.drawer_layout));
            } else {
                mDrawerLayout.closeDrawer(mDrawerLayout);
                Log.d("True", "" + mDrawerLayout.isDrawerOpen(R.id.drawer_layout));
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

在“ btn_menu”上,单击“我将打开和关闭抽屉”,问题是无论我做什么,“ isDrawerOpen”方法始终会返回false。我不知道该怎么办

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<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" />
<!-- The navigation drawer -->

<ExpandableListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

编辑:blipinsk的答案是正确的。但是我也不得不更改if测试。

if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
                    mDrawerLayout.closeDrawer(Gravity.LEFT);
                } else {
                    mDrawerLayout.openDrawer(Gravity.LEFT);
                }
Run Code Online (Sandbox Code Playgroud)

android drawerlayout

0
推荐指数
1
解决办法
713
查看次数

如何实现从右侧打开抽屉菜单

我按照本教程创建了一个导航抽屉

但我需要的是,我需要从右侧打开相同的抽屉菜单。有谁知道如何实现这一目标?

以下是我的 xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">

<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    >
    <include
        android:id="@+id/toolbar"
        layout="@layout/tool_bar"
    />
    <FrameLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>

</LinearLayout>
<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_height="match_parent"
    android:layout_width="wrap_content"
    android:layout_gravity="right"
    app:headerLayout="@layout/header"
    app:menu="@menu/drawer"
    />
Run Code Online (Sandbox Code Playgroud)

并在代码中

  // Initializing Drawer Layout and ActionBarToggle
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
    ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.openDrawer, R.string.closeDrawer){

        @Override
        public void onDrawerClosed(View drawerView) {
            // Code here will be triggered once the drawer closes as we dont want anything to happen so we …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer drawerlayout

0
推荐指数
1
解决办法
2万
查看次数

如何先关闭抽屉然后调用onBackPressed?

我有一个抽屉布局的活动。

我想检查抽屉是否关闭然后调用onBackPressed. 如果抽屉是打开的,它应该先关闭然后onBackPressed应该被调用。

我尝试使用 addDrawerListener 这样做

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setUpUI();

        listeners(
    }

    public void setUpUI() {
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Initializing NavigationView
        navigationView = (NavigationView) findViewById(R.id.navigation_view);

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
    }

    public void listeners() 
        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {

            }

            @Override
            public void onDrawerOpened(View drawerView) {

            }

            @Override
            public void onDrawerClosed(View drawerView) {
                onBackPressed();
            }

            @Override
            public void …
Run Code Online (Sandbox Code Playgroud)

java android drawerlayout

0
推荐指数
1
解决办法
443
查看次数

Flutter:如何将 Drawer Header 宽度设置为最大值?

我正在我的应用程序中添加抽屉,并遵循官方指南。我想将 Drawer 分为三个部分:

  1. 抽屉头(顶部)

  2. 部分项目

  3. 设置(底部)

如果我ListView是其直接子代,Drawer则它可以正常工作,但我无法在底部添加“设置”部分。我发现了这个,它符合我的要求,但DrawerHeader不占用最大宽度。

这是我的代码

      Drawer(
            elevation: 1.5,
            child: Column(children: <Widget>[
              DrawerHeader(
                  decoration: BoxDecoration(
                color: Colors.redAccent,
              )),
              Expanded(
                  child: ListView(
                padding: EdgeInsets.zero,
                children: <Widget>[
                  //list tiles
                ],
              )),
              Container(
                color: Colors.black,
                width: double.infinity,
                height: 0.1,
              ),
              Container(
                  padding: EdgeInsets.all(10),
                  height: 100,
                  child: Text("V1.0.0",style: TextStyle(fontWeight: FontWeight.bold),)),
            ])),
Run Code Online (Sandbox Code Playgroud)

默认情况下,抽屉标题宽度不是最大的。它根据内容大小进行调整,如果我增加字体大小或在左侧和右侧添加填充,则需要更多的宽度。

检查下图以供参考:

在此处输入图片说明

navigation-drawer drawerlayout flutter flutter-layout

0
推荐指数
1
解决办法
6123
查看次数