Android-представление мест (TreeView) поверх MainLayout - PullRequest
0 голосов
/ 18 сентября 2018

Итак, у меня есть этот 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>

Я использую эту библиотеку для создания TreeView, похожего на this

Я создаю объект AndroidTreeView в MainActivity:

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

Это, очевидно, будет отображать только содержимое treeView, а не mainLayout.

Как я могу одновременно показать TreeView и Button / визуализировать TreeView поверх MainLayout?

Я пытался добавить FAB в представлениеиспользуя addView:

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

Но это приводит к java.lang.IllegalStateException: ScrollView can host only one direct child

. В примере проекта автор TreeView использовал для этого Fragments .Но действительно ли это необходимо в этом случае?

1 Ответ

0 голосов
/ 19 сентября 2018

Я решил эту проблему, накачав MainLayout поверх rootLayout.Я пробовал подобное решение до этого, но я, вероятно, использовал «R.id.content» вместо «android.R.id.content».

Этот код относится к нижней части метода onCreate функции MainActivity.:

override fun onCreate(savedInstanceState: Bundle?) {

    // ...
    setContentView(treeView.view)

    val rootLayout = findViewById<FrameLayout>(android.R.id.content)
    View.inflate(this, R.layout.main_layout, rootLayout)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...