当前位置: 首页 > 知识库问答 >
问题:

导航抽屉不滑动

益炜
2023-03-14
public class MainActivity extends Activity {
    private static final String TAG = "MAIN_ACTIVITY";
    private DrawerLayout mDrawerLayout;
    public static ArrayList<String> mOptions=new ArrayList<String>();
    // ListView represents Navigation Drawer
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mTitle;
    private MainActivityLayout mainActivityLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mainActivityLayout=new MainActivityLayout(this,null);

        setContentView(mainActivityLayout);//changed this


        mOptions.add("Search");
        mOptions.add("Inbox");
        mOptions.add("Shout-A-Loud");
        mOptions.add("Saved Profiles");
        mOptions.add("Profile viewers");// premium feature. Will display profile views but not viewers.
        mOptions.add("Settings");
        mOptions.add("App Info");


        mDrawerLayout=(DrawerLayout) mainActivityLayout;//this changed
        mDrawerList=(ListView) new ListViewCustom(this,null);


        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), 
                R.layout.drawer_list_item, mOptions);


        mDrawerList.setAdapter(adapter);
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);


        mDrawerToggle = new ActionBarDrawerToggle(
                this,                    
                mDrawerLayout,           
                R.drawable.ic_drawer,   
                R.string.drawer_open,    
                R.string.drawer_close   
                ) {
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                mTitle="Social Geek";
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu(); 
            }

            public void onDrawerOpened(View view) {
                super.onDrawerOpened(view);
                mTitle="Select";
                getActionBar().setTitle(mTitle);
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);




        if (savedInstanceState == null) {
            selectItem(0);
        }

    }

二等

public class MainActivityLayout extends DrawerLayout{

static Context context;
static DrawerLayout DrawerLayoutCustom;
static ListViewCustom ListViewCustom;

    public MainActivityLayout(Context context,AttributeSet attr) {
        super(context,attr);
        MainActivityLayout.context=context;
        ListViewCustom=new ListViewCustom(context,null);

        LayoutParams layoutParams=new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
        setLayoutParams(layoutParams);
        addView(ListViewCustom);
        initializeEverything(context, null);

    }

三等

public class ListViewCustom extends ListView{
    static final int LISTVIEW_CUSTOM=0;
    public ListViewCustom(Context context,AttributeSet attrs) {
        super(context,attrs);



        DrawerLayout.LayoutParams layoutParams=
                new DrawerLayout.LayoutParams(240,LayoutParams.MATCH_PARENT);
        layoutParams.gravity=Gravity.START;
        setBackgroundColor(111);
        setDivider(getResources().getDrawable(android.R.color.transparent));
        setChoiceMode(CHOICE_MODE_SINGLE);
        setLayoutParams(layoutParams);

    }
}

共有1个答案

胡锋
2023-03-14

我强烈建议在.xml中创建自定义布局。您做错的是,您在ListView中创建了DrawerLayout,甚至没有将其添加到任何布局中。也就是说,您的ListView是父级,而DrawerLayout是子级,这是不正确的。

正确的方法是DrawerLayout是父级,而ListView是子级。(意思是,ListView需要在DrawerLayout内部)。

xml示例:

<!--- drawerlayout needed to make it all work -->
<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">

    <!-- The main content view this is where you display your stuff -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- The navigation drawer, this will slide in and out -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>

</android.support.v4.widget.DrawerLayout>
 类似资料:
  • 有没有办法禁用滑动手势来打开导航抽屉?在标签之间滑动时出现菜单真的很烦人。

  • 有人能告诉我如何创建活动到这个主要活动,导航抽屉将看到在所有他们?我需要使用这个特定的MainActivity代码。我不需要使用碎片,只要3个简单的活动将添加到这个抽屉。 NavDrawer布局:

  • 我是android新手。我想实现一个由项目列表组成的导航抽屉,单击它会打开一个新活动。基本上是所有活动的导航抽屉。当我从导航抽屉中选择一个项目时,特定的活动就会打开。导航抽屉代码是通过执行空活动来实现的。我想在所有活动中实现导航抽屉功能,这些活动被视为空活动,这些活动已经有了一些功能,导航抽屉功能也可以工作。请帮帮我。 这是activity_header档案 这是我的主要活动 这是头活动java代

  • 我一直在寻找解决方案很长一段时间,但令人惊讶的是,我认为还没有人面对它。所以我把它贴出来了。 我用React Navigation V3创建了一个简单的抽屉导航器。我添加了一个菜单图标,当我单击它时,抽屉就会按原样显示。但是,任何手势都不起作用。从左向右滑动不做任何事情。即使抽屉是打开的,点击空白空间也不会关闭抽屉。 这是我的代码:

  • 我在将与和组合时遇到布局问题。 问题是,NavigationDrawer及其内容隐藏在工具栏后面。我已经做了很多研究,尝试了很多重组,但没有一个“解决方案”能解决我的问题。 在这个Webm小视频中可以找到一个演示:https://www.dropbox.com/s/i5zfc2x2ts2fws7/navigation_drawer_stackoverflow32523188.webm?dl=0 基

  • 有人知道如何实现一个滑动菜单像一些顶级应用程序今天吗? 其他堆栈溢出问题还没有关于如何做到这一点的答案,所以我正在尝试收集尽可能多的信息来帮助其他人。我在下面提到的所有应用程序都很好地实现了幻灯片菜单。 只有点击左上角的G+标识,才能从第一屏进入第二屏。注意,整个屏幕从它的位置移动,并且get被推到屏幕的右侧(包括操作栏)。要回到第一个屏幕,您可以将右侧滑回焦点,也可以再次单击G+图标。 您可以使