0

と に問題がScrollViewありますImageView

私が欲しいのは:

私はImageView常に画面の上部にセットを持っています。次に、のScrollViewすべての要素がどこに行くかがありView、その中に別のImageView要素があり、前の要素が画面をいっぱいにしない場合 (通常は大画面) に画面の下部に設定され、の下部に設定されます。ScrollViewスクロールが存在する場合。

Activities私が持っている他のものには問題ありませんActivityが、FrameLayout.

私が得るものは次のとおりです。

(以下のコードを参照)(一番下にとどまるもの)RelativeLayoutのを設定すると:ImageViewheight = "wrap_content"

  • 縦向き:Image画面に収まらないため、実際のサイズはありません。それに収まるように、Scroll表示する必要があります。->なぜ他のように表示されないのかわかりませんActivities
  • 横向き:ImageView画面下部に表示されます。他の要素が画面に収まらないため、Scrollが 内に表示されFrameLayoutます。

(一番下にとどまるもの)のに設定するとRelativeLayout(画像の実際の高さは小さくなります):ImageViewheight = "200dp"

  • 縦向きの場合:Imageは表示されません。ありませんScroll(他の要素が見えるので必要ありません)。
  • 横向きの場合: 2 つの が表示されScrollsます。1 つFrameLayoutは要素用に、もう 1 つはImageView.

これが私の最新のコードです:

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

    <LinearLayout 
        android:id="@+id/linearLayoutLogoFactor_factura"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

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

    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollViewMain"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true" >

        <LinearLayout
            android:id="@+id/linearLayoutMain2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_gravity="center_horizontal"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:orientation="vertical" >

            <LinearLayout 
                android:id="@+id/linearLayoutDireccionFactura"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginRight="25dp"
                android:layout_marginTop="10dp"
                android:weightSum="1.0">

                <TextView
                    android:id="@+id/textViewlabelDireccionFactura"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.3"
                    android:text="@string/etiqueta_direccion"
                    android:textSize="@dimen/textSize"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/textViewDireccion"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.7"
                    android:textSize="@dimen/textSize" />

            </LinearLayout>

            <FrameLayout
                android:id="@+id/frameLayoutFacturas"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginRight="25dp"
                android:layout_marginTop="10dp" >

                <ListView
                    android:id="@android:id/list"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@android:id/empty"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/facturas_vacia"
                    android:textSize="@dimen/textSize" />

            </FrameLayout>

            <RelativeLayout
                android:id="@+id/linearLayoutImagenInferior_main"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp" >

                <ImageView
                    android:id="@+id/imageViewImagenInferior_main"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:adjustViewBounds="true"
                    android:src="@drawable/la_electrica_de_las_empresas" />
            </RelativeLayout>

        </LinearLayout>

    </ScrollView>

</LinearLayout>

手伝って頂けますか?前もって感謝します。

4

1 に答える 1

0

その質問を見て、私が見つけた解決策は次のとおりです。

その関数を作成します。

public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter(); 
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }

私のListViewでそれを呼び出します。1 つScroll( の 1 つScrollView) だけが表示され、使用されます。

于 2013-07-15T07:50:38.040 に答える