Прокручиваемое ограничение высоты LinearLayout - PullRequest
0 голосов
/ 26 июня 2018

Я добавляю TextViews в LinearLayout программным способом и хочу убедиться, что если TextViews превысит определенное число, пользователь сможет прокрутить вниз. Я включил LinearLayout в ScrollView, который прекрасно работает до определенного предела. После этого предела виды сверху вообще не отображаются.

Я использую следующий код:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.linear_layout_with_scrollview);


    for (int i = 0; i < 500; i++) {
        createView(String.valueOf(i));
    }
}



private void createView(String text){

    TextView tv = new TextView(this);

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT,
        LinearLayout.LayoutParams.WRAP_CONTENT);

    lp.setMargins(0,15,0,0);


    tv.setLayoutParams(lp);

    tv.setText(text);
    tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP,20);
    LinearLayout layout=findViewById(R.id.linear_layout);
    layout.addView(tv);

}

и для макета:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView android:layout_height="wrap_content" android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

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

</ScrollView>

Это не тот код, который я использую, а упрощенная версия для демонстрации проблемы.

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

используйте android:fillViewport="true" в вашем scrollview

 <?xml version="1.0" encoding="utf-8"?>

<ScrollView 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"
    android:fillViewport="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

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

</ScrollView>
0 голосов
/ 26 июня 2018

Попробуйте это. я надеюсь, что работа ...

<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:layout_height="wrap_content" android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout android:layout_height="matchparent" android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">


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

</LinearLayout>

</ScrollView>
0 голосов
/ 26 июня 2018

Я бы порекомендовал использовать RecyclerView. Вы можете найти простой пример здесь .

Это лучший метод для работы с большими списками.

...