MainLayout顶部的Android位置视图(TreeView)

时间:2018-09-18 18:41:15

标签: android android-layout android-studio android-fragments treeview

所以我有这个MainLayout,它现在仅由一个浮动动作按钮(FAB)组成:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/lel"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/floatingActionButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="16dp"
        android:layout_marginEnd="16dp"
        android:clickable="true"
    android:src="@drawable/ic_add_black_24dp" />

</RelativeLayout>

我正在使用this library创建类似于this的treeView

我在MainActivity中创建AndroidTreeView对象:

override fun onCreate(savedInstanceState: Bundle?) {
    // ...
    val treeView = AndroidTreeView(this, root) // 'this' is the context
    // ...
    setContentView(treeView.view)
}

这显然只会显示treeView的内容,而不显示mainLayout。

如何同时显示TreeView和Button /在MainLayout顶部呈现TreeView?

我尝试使用addView将FAB添加到视图中

val view = treeView.view as ViewGroup
view.addView(floatingActionButton2)

但这会导致java.lang.IllegalStateException: ScrollView can host only one direct child

在一个示例项目中,TreeView的作者为此使用了 Fragments 。但这是否真的有必要?

1 个答案:

答案 0 :(得分:0)

我通过在rootLayout顶部填充MainLayout解决了这个问题。之前我尝试过类似的解决方案,但我可能使用的是“ R.id.content”而不是“ android.R.id.content”。

此代码属于MainActivity的onCreate方法的底部:

override fun onCreate(savedInstanceState: Bundle?) {

    // ...
    setContentView(treeView.view)

    val rootLayout = findViewById<FrameLayout>(android.R.id.content)
    View.inflate(this, R.layout.main_layout, rootLayout)
}