【问题标题】:Slider Drawer taking up entire screen滑动抽屉占据整个屏幕
【发布时间】:2014-01-09 12:58:27
【问题描述】:

我创建了一个自定义滑动菜单,但它似乎占据了整个屏幕。我的意思是我不能点击布局上的其他项目。它并不总是打开的,它实际上只是禁用了它“下”的所有项目。我已经为一项活动附加了我的 xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".HomeActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="132dp"
        android:text="@string/name"
        android:textSize="25sp" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/textView1"
        android:layout_alignParentLeft="true"
        android:contentDescription="@string/description1"
        android:src="@drawable/fam" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="@string/enter" />

    <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/left_drawer"
        android:layout_width="240dp"
        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" />

    </android.support.v4.widget.DrawerLayout>

</RelativeLayout>

【问题讨论】:

  • 将其高度 android:layout_height="match_parent" 更改为 android:layout_height="wrap_content"

标签: android xml android-layout menu slider


【解决方案1】:

试试这个而不是 match_parent:

android:layout_height="wrap_content"

【讨论】:

  • 另外,为您的问题发布屏幕截图。
  • 不,现在它甚至无法启动,Logcat 正在给我一个E/AndroidRuntime(1275): java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
【解决方案2】:

只需将android:layout_below="@+id/button1" 设置为您的DrawerLayout,如下所示:

  <android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button1"> //set your drawer layout at the bottom of your `Button`. 

【讨论】:

    【解决方案3】:

    请查看有关 DrawerLayout 的 Android 开发人员培训文章 - http://developer.android.com/training/implementing-navigation/nav-drawer.html#top

    从我的角度来看,您似乎没有正确使用它。正如上面文章中所写:以下布局使用带有两个子视图的 DrawerLayout:一个 FrameLayout 包含主要内容(在运行时由 Fragment 填充),一个 ListView 用于导航抽屉。

    此框架布局用于您的 Activity 内容。所以你必须使用片段

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

    而这个ListView是Navigation Drawer的内容

    <ListView android:id="@+id/left_drawer"
            android:layout_width="240dp"
            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"
            />
    

    所以将你的其他组件放入片段中。

    【讨论】:

      【解决方案4】:

      我也遇到了同样的问题,下面的代码对我有用。使用它而不是匹配父级: android:layout_height="wrap_content"

      【讨论】:

        【解决方案5】:

        请更改宽度

           <ListView android:id="@+id/left_drawer"
                android:layout_width="match_parent"//not indp
                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"
                />
        

        抽屉应该是所有视图的父级,请试试这个

        <android.support.v4.widget.DrawerLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        
        <RelativeLayout 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="bottom"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            tools:context=".HomeActivity" >
        
        
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="132dp"
                android:text="@string/name"
                android:textSize="25sp" />
        
            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/textView1"
                android:layout_alignParentLeft="true"
                android:contentDescription="@string/description1"
                android:src="@drawable/fam" />
        
            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:text="@string/enter" />
        </RelativeLayout>
        
            <FrameLayout
                android:id="@+id/content_frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        
          <ListView android:id="@+id/left_drawer"
                android:layout_width="match_parent"//not indp
                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"
                />
        

        【讨论】:

        • 改变了宽度,还是和以前一样。不过谢谢!
        【解决方案6】:
            android:layout_marginTop="200dp"
        

        我的代码中有这个功能。我把 android:layout_height="wrap_content" 和我删除了 marginTop 和我有全高 SlidingDrawer。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-20
          • 1970-01-01
          • 2021-03-11
          • 2019-11-21
          • 1970-01-01
          • 1970-01-01
          • 2021-03-30
          相关资源
          最近更新 更多