自定义导航抽屉

时间:2014-02-27 17:42:10

标签: android android-layout

您好我有这样的布局,我不明白如何添加带有照片和文字的静态标题 导航抽屉。任何例子?感谢

像这样的人 enter image description here

<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">

<!-- As the main content view, the view below consumes the entire
     space available using match_parent in both dimensions. -->
<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="#9d9d9d"
    android:dividerHeight="1dp"
    android:background="#252525" />

2 个答案:

答案 0 :(得分:1)

在FrameLayout之后,第一个视图将被接受为导航抽屉,因此您在FrameLayout之后创建一个布局,然后将您的视图放在其中。这是一个例子,它是非常基本的,但你会明白这一点。

<!-- The main content view -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</FrameLayout>
<!-- The navigation drawer -->


<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout"
    android:layout_height="match_parent"
    android:layout_width="320dp"
    android:orientation="vertical"
    android:layout_gravity="start" >

    <RelativeLayout   
        android:id="@+id/NavDrawerInfo"      
        android:layout_width="320dp"
        android:background="@drawable/bg"
        android:layout_height="100dp">

        <ImageView android:src="@drawable/ic_launcher"
           android:id="@+id/userImage"
           android:layout_width="200dp"
           android:layout_marginRight="200dp"
           android:layout_height="100dp"/>
        <TextView 
             android:id="@+id/userName"
             android:layout_width="wrap_content"
             android:layout_height="100dp"
             android:layout_marginLeft="125dp"
             android:textSize="20sp"
            />
        <TextView 
             android:id="@+id/userImage"
             android:layout_width="wrap_content"
             android:layout_height="100dp"
             android:layout_marginTop="20dp"
             android:layout_marginLeft="125dp"
             android:textSize="20sp"
            />



 </RelativeLayout>
    <ExpandableListView android:id="@+id/left_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:choiceMode="singleChoice"
        android:divider="@color/list_divider"
        android:childDivider="@color/list_divider"
        android:groupIndicator="@drawable/group_indicator"
        android:dividerHeight="2dp"
        android:gravity="start" 
        android:background="#f1f1f1"/>


</LinearLayout>



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

答案 1 :(得分:1)

实际上并不像 user665 那样简单。如果您直接关注Google提供的示例,则需要让DrawerLayout知道其内容是什么,方法是将DrawerLayout.isDrawerOpenDrawerLayout.closeDrawer更改为View您的{ {1}}已被包含,否则您将抛出ListView,因为ClassCastException将无法匹配。

因此,要制作静态标题,您可以执行以下操作:

LayoutParams

然后在使用上面列出的方法时引用<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" /> <LinearLayout android:id="@+id/drawer_content" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical" > <ImageView android:id="@android:id/icon" android:layout_width="match_parent" android:layout_height="200dp" android:contentDescription="@null" android:scaleType="centerCrop" /> <ListView android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#111" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" /> </LinearLayout> </android.support.v4.widget.DrawerLayout>

Example