标签: drawerlayout

禁用特定片段的滑动手势(导航抽屉)

我想禁用打开导航抽屉的滑动手势,但仅限于特定片段,我的意思是我不想在整个应用程序中禁用它.

我已经阅读了很多问题,似乎其中一个有问题,但我可能不明白我必须做什么:这个

我试过这个:

MainActivity,onCreate:

mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, R.layout.fragment_my_favourite);
Run Code Online (Sandbox Code Playgroud)

R.layout.fragment_my_favourite:我要禁用抽屉的片段.

我会感激任何提示.非常感谢

更新1:

我试过这个:

主要活动:

private ViewDragHelper draggerObj;
private Field mDragger;
private Field mEdgeSize;
private int edge;
private DrawerLayout mDrawer;

public void closeDrag()
{       
    try 
    {
       mDragger = mDrawer.getClass().getDeclaredField("mLeftDragger");
    }
    catch (NoSuchFieldException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    mDragger.setAccessible(true);

    try 
    {
        draggerObj = (ViewDragHelper) mDragger.get(mDrawer);
    }
    catch (IllegalArgumentException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (IllegalAccessException e) 
    {
        // TODO Auto-generated catch block …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer drawerlayout

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

如何在活动的特定片段中禁用抽屉选项

我有一个包含5个片段的活动,我在抽屉活动中使用抽屉布局,但我想在片段2中使用(启用)抽屉,我想在剩余的片段中禁用抽屉选项.

任何人都可以帮我怎么做?

android navigation-drawer drawerlayout

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

android.support.constraint.ConstraintLayout 不能转换为 android.support.v4.widget.DrawerLayout

合并两个 androidStudio 项目后,我遇到了这个错误,应用程序初始化为飞溅,并且显示和运行良好。然后当尝试访问 activity_main.xml 时,应用程序崩溃。错误是:

FATAL EXCEPTION: main
              Process: eu.siacs.conversations, PID: 16604
              java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.siacs.conversations/eu.siacs.conversations.ui.MainActivity}: java.lang.ClassCastException: android.support.constraint.ConstraintLayout cannot be cast to android.support.v4.widget.DrawerLayout
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2726)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787)
                  at android.app.ActivityThread.-wrap12(ActivityThread.java)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6247)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
               Caused by: java.lang.ClassCastException: android.support.constraint.ConstraintLayout cannot be cast to android.support.v4.widget.DrawerLayout
                  at eu.siacs.conversations.ui.MainActivity.onCreate(MainActivity.java:96)
                  at android.app.Activity.performCreate(Activity.java:6757)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2679)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787) 
                  at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:154) 
                  at android.app.ActivityThread.main(ActivityThread.java:6247) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) …
Run Code Online (Sandbox Code Playgroud)

java android drawerlayout android-constraintlayout

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

如何从片段打开片段(kotlin)

我正在寻找一种使用ClickListener;将片段移动到片段的方法 但我不知道如何将片段移动到片段。

我想要这样移动:

一个fragment有4个cardview

单击 1 卡视图:移至片段 B
单击 2 卡视图:移至片段 C
单击 3 卡视图:移至片段 D
单击 4 卡视图:移至片段 F

我已经使用下面的代码将片段移动到活动中

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        power655Card.setOnClickListener {
            val intent = Intent (getActivity(), Power655Activity::class.java)
            getActivity()?.startActivity(intent)
        }
Run Code Online (Sandbox Code Playgroud)

android-fragments kotlin onclicklistener drawerlayout

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

即使在 gradle 中添加依赖项后,“无法解析类 android.support.v4.widget.DrawerLayout”

Cannot resolve class android.support.v4.widget.DrawerLayout即使在我的 build.gradle 文件中添加了 DrawerLayoutandroidx.drawerlayout:drawerlayout:1.1.1和 Materialcom.google.android.material:material:1.0.0实现之后,我仍然收到错误。

我尝试添加其他实现,例如com.android.support:support-compat:28.0.0com.android.support:design:25.0.0,但错误仍然存​​在,并且应用程序无法启动。

知道如何解决这个问题吗?

构建.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "edu.ktu.birthdaycalendar"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'org.jetbrains:annotations-java5:15.0'
    implementation …
Run Code Online (Sandbox Code Playgroud)

android android-support-library drawerlayout androidx

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

防止DrawerLayout处理内容区域中的触摸

通常,当按下内容区域时DrawerLayout,抽屉将关闭并且触摸被消耗.有没有办法防止这种情况并将触摸事件传递到内容区域?

谢谢!

android navigation-drawer drawerlayout

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

DrawerLayout的监听器和配置

由于谷歌文档谷歌的样本,我已经构建了一个导航抽屉.

现在我正在寻找一个解决方案,在右侧滑动关闭时隐藏键盘,因为在这张幻灯片中我有一个EditText,当我关闭菜单时,键盘仍然打开.

最后,当我打开菜单时,布局会覆盖主要内容.所以我想知道是否有一种简单的方法可以使主要内容跟随菜单的运动,Facebook就像?

keyboard android navigation-drawer drawerlayout

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

单击图标时Android DrawerLayout崩溃

所以我想了解DrawerLayout.首先,我刚刚创建了它并且它运行良好.然后我尝试通过在左上角添加图标来操纵它,这允许您显示/隐藏列表.问题是,当我启动应用程序时,列表已经显示,当我尝试通过单击图标隐藏它时,应用程序崩溃了.这是我的文件:Activity_main.xml:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/DrawerLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/ContenuFrame"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

       <ListView
           android:id="@+id/ListView1"
            android:layout_width="241dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:divider="#666"
            android:dividerHeight="1dp"
            android:background="#333"
            android:paddingLeft="15sp"
            android:paddingRight="15sp"/>
    </FrameLayout>


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

Item_Layout :(列表中的Items(每个)的布局):

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Element"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#fff"
        android:textSize="20sp"
        android:gravity="center_vertical"
        android:paddingStart="14.5sp"
        android:paddingEnd="14.5sp"
        android:minHeight="35sp"/>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java:

package com.example.drawerlisttest;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

    String[] ListElement;
    ListView List;
    DrawerLayout DLayout;
    ActionBarDrawerToggle ABDT;

    @Override
    protected void onCreate(Bundle …
Run Code Online (Sandbox Code Playgroud)

layout android list drawerlayout

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

Xamarin.Android:DrawerLayout.LayoutParams中的Gravity参数

我正在尝试DrawerLayout使用Xamarin.Android创建程序,但是在尝试添加ListView应该可从左侧拖动的时遇到了问题。

这是我的代码:

DrawerLayout myDrawerLayout = new DrawerLayout(this);
myDrawerLayout.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
SetContentView(myDrawerLayout);


FrameLayout myFrameLayout = new FrameLayout(this);
myFrameLayout.LayoutParameters = new DrawerLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
myFrameLayout.SetBackgroundColor(Android.Graphics.Color.Gray);
myDrawerLayout.AddView(myFrameLayout);


ListView myListView = new ListView(this);
myListView.SetBackgroundColor(Android.Graphics.Color.Green);
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240,
                                                  height: DrawerLayout.LayoutParams.MatchParent,
                                                  gravity: ????????
                                                           );
myDrawerLayout.AddView(myListView);
Run Code Online (Sandbox Code Playgroud)

如您所知..我不知道作为gravity参数传递什么

DrawerLayout类中函数的定义如下:

public LayoutParams(int width, int height, int gravity);
Run Code Online (Sandbox Code Playgroud)

所以,我必须通过intgravity,但如何?

我尝试了以下方法:

myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: Gravity.LEFT);
Run Code Online (Sandbox Code Playgroud)

它给我错误:

“重力”不包含“左”的定义

还尝试了: …

c# android xamarin.android drawerlayout

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

重置NavigationView滚动

我无法自己找到答案或无法解决的简单问题。

每当打开导航视图时,如何使它始终从其“原始”滚动位置开始,因此无论以前将滚动位置留在何处,第一个菜单项始终可见。

我尝试了这个没有成功:

drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
    ...

    @Override
    public void onDrawerClosed(View drawerView) {
        drawerView.scrollTo(0, 0);
    }

    ...
});
Run Code Online (Sandbox Code Playgroud)

谢谢。

android drawerlayout navigationview

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