Android gallery dynamically resize height

2019-05-31 18:10发布

问题:

I want to make horizontal gallery to perform custom views: for example a want to have an array of products with its' description, price and photo, I build custom layout and override getView and adapter.

Description text can be too large and I return only small portion of it and load to the view. There is a button "more" to expand this view. Below the gallery there is an another layout view with some buttons, controls etc.

OnMoreButtonClick I only set full text to the description TextView. Gallery height I wrapcontent and I think it has to change size dynamically.

BTW if I load the full text without short one - everything is ok.

This is main screen of app, when I press button I want gallery item to stretch down and pull TimeAndDatePicker down.

But when I press it I can only see:

And if I load the full text without small one everything is ok:

Main.xml:

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

android:layout_width="fill_parent"
android:id = "@+id/scene"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/main_background" >

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            <ru.human.samples.CustomGallery
              android:id="@+id/galleryUnique"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:gravity="center"
              android:spacing="1dp" android:unselectedAlpha="255.0" android:visibility="visible" android:fadingEdge="none"/>
           <DatePicker
        android:id="@+id/datePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </LinearLayout>



</ScrollView>

And galleryItem xml:

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

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        style="@style/PriceText"
        android:text="Medium Text"/>

</LinearLayout>

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    style="@style/BodyText"
    android:text="TextView" />

 <TextView
    android:id="@+id/description"
    android:layout_width="match_parent"
    style="@style/BodyText"
    android:text="Medium Text"
    android:layout_height="wrap_content" />

 <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

回答1:

There is one "hack" in my case.

I put gallery in one more LinearLayout, make it WrapContent by default and Gallery FitParent, when i click "more" button i expand the Layout height (previous height + countlines of new textview * sizeoftext).