#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>