Как сделать ScrollView в котлине - PullRequest
0 голосов
/ 10 сентября 2018

как я могу создать ScrollView, который динамически добавляет TextViews к нему в коде?прямо сейчас у меня есть:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
>
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Create TextView"
    />

<ScrollView
    android:id="@+id/Scroll"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" />
</ScrollView>

в качестве файла макета и это как мой файл kotlin:

class Abfahrtsmonitor : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.abfahrtsmonitor)

    // Variable for counting text view
    var counter: Int = 1;

    // Set a click listener for button widget
    button.setOnClickListener{
        // Create a new TextView instance programmatically
        val text_view: TextView = TextView(this)

        // Creating a LinearLayout.LayoutParams object for text view
        var params : LayoutParams = LayoutParams(
                LayoutParams.MATCH_PARENT, // This will define text         view width
                LayoutParams.WRAP_CONTENT // This will define text view     height
        )
 // Display some text on the newly created text view
        text_view.text = "Hi, i am a TextView. Number : $counter"
 // Finally, add the text view to the view group
        Scroll.addView(text_view)

        // Increment the counter
        counter++

, но теперь я получаю ошибку:

java.lang.IllegalStateException: ScrollView может содержать только один прямой дочерний элемент

Ответы [ 2 ]

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

java.lang.IllegalStateException: ScrollView может содержать только один прямой ребенок

ScrollView может содержать только один дочерний элемент, что означает, что он может содержать только одно представление , поскольку прямой дочерний элемент , поэтому что-то вроде этого поможет:

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    // Content in here ...
    </LinearLayout>
</ScrollView>

Но это не тот случай, поскольку у вас уже есть LinearLayout в корне макета, поэтому вы можете рассмотреть возможность размещения ScrollView в качестве корня и содержимого внутри LinearLayout. http://developer.android.com/reference/android/widget/ScrollView.html

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

Сам ScrollView может содержать только одного ребенка, в данном случае это ваш макет. Макет может содержать несколько видов, и вы должны добавить TextView s к макету, а не ScrollView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...