addView将文本推送到drawerlayout

时间:2016-08-05 09:09:54

标签: android

我对Android应用程序开发完全陌生,我遇到了一个问题:

当我在DrawerLayout上按下按钮时,我正在向我的主LinearLayout添加内容:

private void switchTo(String text) {
    final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0.0F);
    final TextView textView = new TextView(this);
    textView.setLayoutParams(params);
    textView.setText("New text: " + text);
    content.addView(textView, 0);
}

但是这会在我的LinearLayout上添加文字:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/main_layout"
android:gravity="bottom">

<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:background="#e6e6e6"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/navList"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:background="#cccccc"/>
</android.support.v4.widget.DrawerLayout>

如何设置在DrawerLayout之后添加文本,因为现在添加文本会将DrawerLayout向下推(如果不清楚,我希望DrawerLayout保持在页面顶部的高度,同时渲染文本& #34;旁边&#34;)

1 个答案:

答案 0 :(得分:1)

DrawerLayout就像这样工作

  

要添加导航抽屉,请使用a声明您的用户界面   DrawerLayout对象作为布局的根视图。在 - 的里面   DrawerLayout,添加一个包含主要内容的视图   屏幕(隐藏抽屉时的主要布局)和另一个   查看,其中包含导航抽屉的内容。

Check this information regarding DrawerLayouts

您的布局文件应该有2个视图:
1 - 主要内容(当抽屉关闭时)
2 - 抽屉本身

我会像你这样的布局

<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 : here you define the layout of your activity -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


    <!-- The main content view : here you define the layout of your activity -->
    <LinearLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"> 

        <!-- The navigation drawer -->
        <ListView
            android:id="@+id/navList"
            android:layout_width="250dp"
            android:layout_height="match_parent"
            android:layout_gravity="left|start"
            android:background="#cccccc"/>

    <LinearLayout/>

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

此外,当您指定:

 content.addView(textView, 0);

严格来说,您要将textView添加到内容的第一个位置。 这会在textI之前添加textView,导致textView位于drawerLayout之前 Check this reference regarding ViewGroups and adding views

因此,修改后的代码将是

..
private LinearLayout contentFrame;
..
contentFrame = (LinearLayout) findViewById(R.id.content_frame);
...

private void switchTo(String text) {
    final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0.0F);
    final TextView textView = new TextView(this);
    textView.setLayoutParams(params);
    textView.setText("New text: " + text);
    contentFrame.addView(textView);
}