我想禁用打开导航抽屉的滑动手势,但仅限于特定片段,我的意思是我不想在整个应用程序中禁用它.
我已经阅读了很多问题,似乎其中一个有问题,但我可能不明白我必须做什么:这个
我试过这个:
MainActivity,onCreate:
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, R.layout.fragment_my_favourite);
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 …我有一个包含5个片段的活动,我在抽屉活动中使用抽屉布局,但我想在片段2中使用(启用)抽屉,我想在剩余的片段中禁用抽屉选项.
任何人都可以帮我怎么做?
合并两个 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) …我正在寻找一种使用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)
        }
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.0和com.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 …通常,当按下内容区域时DrawerLayout,抽屉将关闭并且触摸被消耗.有没有办法防止这种情况并将触摸事件传递到内容区域?
谢谢!
现在我正在寻找一个解决方案,在右侧滑动关闭时隐藏键盘,因为在这张幻灯片中我有一个EditText,当我关闭菜单时,键盘仍然打开.
最后,当我打开菜单时,布局会覆盖主要内容.所以我想知道是否有一种简单的方法可以使主要内容跟随菜单的运动,Facebook就像?
所以我想了解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>
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"/>
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 …我正在尝试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);
如您所知..我不知道作为gravity参数传递什么
DrawerLayout类中函数的定义如下:
public LayoutParams(int width, int height, int gravity);
所以,我必须通过int的gravity,但如何?
我尝试了以下方法:
myListView.LayoutParameters = new DrawerLayout.LayoutParams( width: 240, height: DrawerLayout.LayoutParams.MatchParent, gravity: Gravity.LEFT);
它给我错误:
“重力”不包含“左”的定义
还尝试了: …
我无法自己找到答案或无法解决的简单问题。
每当打开导航视图时,如何使它始终从其“原始”滚动位置开始,因此无论以前将滚动位置留在何处,第一个菜单项始终可见。
我尝试了这个没有成功:
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
    ...
    @Override
    public void onDrawerClosed(View drawerView) {
        drawerView.scrollTo(0, 0);
    }
    ...
});
谢谢。