将导航抽屉的列表视图更改为任何自定义视图(比如相对布局)?

Change Listview of Navigation Drawer to any Custom View (Say Relative Layout)?

我们有 ListView 由 Android 工作室显示在我们默认的 NavigationDrawer 中。我们可以将 ListView 更改为任何其他 Relative Layout 吗?

我们可以写任何自定义的东西吗?

是的,您可以将 ListView 替换为任何其他自定义视图,例如 RelativeLayout 等。 看我的例子

在你的 activity_main.xml 中写一个自定义 relativeLayout 并在 MainActivitydrawerLayout 中给出布局 ID,像这样,

activity_main.xml

    <!-- The main content view -->
    <RelativeLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <View
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="#0099cc"
            android:id="@+id/view" />

        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/menu_imageView"
            android:src="@drawable/menu"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:layout_alignParentStart="true" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/zone_name"
            android:text="Kitchen"
            android:textColor="#ffffff"
            android:textSize="20dp"
            android:layout_alignBottom="@+id/menu_imageView"
            android:layout_centerHorizontal="true" />

    </RelativeLayout>



    <!-- The navigation drawer -->

    <RelativeLayout
        android:id="@+id/dockedLayout"
        android:layout_width="500dp"
        android:background="@drawable/background_dock"
        android:layout_height="match_parent"
        android:layout_gravity="start">
        <TextView
            android:id="@+id/master_volume"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Master Volume"
            android:textColor="#ffffff"
            android:textSize="15dp"
            android:textStyle="bold"/>
        <SeekBar
            android:id="@+id/seekBarMasterVolume"
            android:layout_width="200dp"
            android:layout_height="30dp"
            android:layout_below="@+id/master_volume"
            android:progressDrawable="@drawable/progress"
            android:thumb="@drawable/thumb"/>
    </RelativeLayout>

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

MainActivity.java

public class MainActivity extends Activity {
    private DrawerLayout mDrawerLayout;
    RelativeLayout mDockLayout;
    ImageView menu;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        menu = (ImageView) findViewById(R.id.menu_imageView);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDockLayout = (RelativeLayout) findViewById(R.id.dockedLayout);

        menu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDrawerLayout.openDrawer(mDockLayout);
            }
        });
    }