Android — проблема с scrollview

#android #android-layout #scrollview

#Android #android-макет #scrollview

Вопрос:

Я использую scrollview в своей деятельности. Scrollview содержит LinearLayout и некоторые другие представления внутри этого макета. Существует еще один LinearLayout android:id="@ id/linLayoutImagesContainer" , используемый для динамического размещения элементов изображений с 3 изображениями, как в Gridview с тремя столбцами. Все остальное работает отлично. Но, если я добавлю более 12 строк (например, 36 изображений) в LinearLayout динамически, тогда scrollview станет пустым без просмотра. Кто-нибудь может мне помочь? Заранее спасибо.

Мой XML-макет:

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

<RelativeLayout
    android:id="@ id/relLayoutActionBar"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:background="@drawable/background_action_bar">

    <TextView
        android:id="@ id/textViewTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:text="Activity Detail"
        android:textColor="#ffffff"
        android:textSize="20sp"/>

    <ImageView
        android:id="@ id/ivButtonBack"
        android:layout_width="35dp"
        android:layout_height="20dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:background="@drawable/back_icon"
        android:padding="8dp"
        android:layout_marginLeft="10dp"
        android:textColor="#FFFFFF"
        android:textSize="14sp"/>
</RelativeLayout>

<RelativeLayout
    android:id="@ id/relLayoutTripBanner"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@ id/relLayoutActionBar">

    <ImageView
        android:id="@ id/imageViewActivityBanner"
        android:layout_width="match_parent"
        android:layout_height="220dp"
        android:scaleType="centerCrop"
        android:background="@drawable/default_activity_banner"/>

    <!--<Button
        android:id="@ id/buttonActivityBanner"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:background="@null"/>-->
</RelativeLayout>

<ScrollView
    android:id="@ id/parallaxScroll"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:layout_below="@ id/relLayoutActionBar"
    android:layout_above="@ id/relLayoutActionFooter">

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

        <Button
            android:id="@ id/buttonActivityBanner"
            android:layout_width="match_parent"
            android:layout_height="220dp"
            android:background="@null"
            android:layout_marginTop="-220dp"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:background="#ffffffff"
            android:alpha="0.9">

            <TextView
                android:id="@ id/textViewTripDescription"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:padding="10dp"
                android:alpha="0.9"
                android:background="#ffffffff"
                android:text="Activity (Description)"
                />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:layout_margin="10dp"

                android:background="@drawable/layout_round_border">

                <TextView
                    android:id="@ id/textViewImages"
                    android:layout_width="wrap_content"
                    android:layout_height="35dp"
                    android:layout_alignParentLeft="true"
                    android:gravity="center"
                    android:text="Images (0)"
                    android:textSize="18sp"
                    android:textColor="@android:color/white"
                    android:background="@drawable/layout_left_round_colored"
                    android:layout_toLeftOf="@ id/viewDate"
                    />

                <View
                    android:id="@ id/viewDate"
                    android:layout_width="0dp"
                    android:layout_height="60dp"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    />

                <TextView
                    android:id="@ id/textViewVideos"
                    android:layout_width="wrap_content"
                    android:layout_height="35dp"
                    android:layout_alignEnd="@id/textViewImages"
                    android:gravity="center"
                    android:text="Videos (0)"
                    android:textColor="#ffec6221"
                    android:textSize="18sp"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentRight="true"
                    android:layout_toRightOf="@ id/viewDate"/>
            </RelativeLayout>

            <LinearLayout
                android:id="@ id/linLayoutImagesContainer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp">
            </LinearLayout>

        </LinearLayout>
    </LinearLayout>
</ScrollView>
 

Комментарии:

1. можете ли вы попробовать вызвать requestLayout(), как только закончите добавлять свои изображения. Вызывайте requestLayout после каждого добавления изображения, если это необходимо. И, пожалуйста, добавьте (к этому вопросу) код, который вы используете для динамического добавления представлений изображений

2. Если вы просматриваете logcat, видите ли вы высокое использование памяти и, возможно, исключение, или с этим ничего не связано?

3. @Shade23 Я вызвал requestLayout(), но он не работает.

4. Опубликуйте код, как вы добавляете view в LinearLayout, а также макет этих представлений

5. Я решил свою проблему. Это связано с alpha = 0.9 для линейного макета и его textview. Я удалил альфа-версию.

Ответ №1:

Попробуйте этот способ, надеюсь, это поможет вам решить вашу проблему.

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

    <RelativeLayout
        android:id="@ id/relLayoutActionBar"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@drawable/background_action_bar">

        <TextView
            android:id="@ id/textViewTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:text="Activity Detail"
            android:textColor="#ffffff"
            android:textSize="20sp"/>

        <ImageView
            android:id="@ id/ivButtonBack"
            android:layout_width="35dp"
            android:layout_height="20dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="5dp"
            android:background="@drawable/back_icon"
            android:padding="8dp"
            android:layout_marginLeft="10dp"
            android:textColor="#FFFFFF"
            android:textSize="14sp"/>
    </RelativeLayout>

    <RelativeLayout
        android:id="@ id/relLayoutTripBanner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@ id/imageViewActivityBanner"
            android:layout_width="match_parent"
            android:layout_height="220dp"
            android:scaleType="centerCrop"
            android:background="@drawable/default_activity_banner"/>
    </RelativeLayout>

    <ScrollView
        android:id="@ id/parallaxScroll"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:fillViewport="true">

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

            <Button
                android:id="@ id/buttonActivityBanner"
                android:layout_width="match_parent"
                android:layout_height="220dp"
                android:background="@null"
                android:layout_marginTop="-220dp"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:background="#ffffffff"
                android:alpha="0.9">

                <TextView
                    android:id="@ id/textViewTripDescription"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:padding="10dp"
                    android:alpha="0.9"
                    android:background="#ffffffff"
                    android:text="Activity (Description)"
                    />

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="35dp"
                    android:layout_margin="10dp"

                    android:background="@drawable/layout_round_border">

                    <TextView
                        android:id="@ id/textViewImages"
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:layout_alignParentLeft="true"
                        android:gravity="center"
                        android:text="Images (0)"
                        android:textSize="18sp"
                        android:textColor="@android:color/white"
                        android:background="@drawable/layout_left_round_colored"
                        android:layout_toLeftOf="@ id/viewDate"
                        />

                    <View
                        android:id="@ id/viewDate"
                        android:layout_width="0dp"
                        android:layout_height="60dp"
                        android:layout_alignParentTop="true"
                        android:layout_centerHorizontal="true"
                        />

                    <TextView
                        android:id="@ id/textViewVideos"
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:layout_alignEnd="@id/textViewImages"
                        android:gravity="center"
                        android:text="Videos (0)"
                        android:textColor="#ffec6221"
                        android:textSize="18sp"
                        android:layout_alignParentTop="true"
                        android:layout_alignParentRight="true"
                        android:layout_toRightOf="@ id/viewDate"/>
                </RelativeLayout>

                <LinearLayout
                    android:id="@ id/linLayoutImagesContainer"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp">
                </LinearLayout>

            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>