2

私は以下のような LinearLayout を持っています

    <LinearLayout
        android:id="@+id/middleLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:orientation="vertical" >

            <ListView
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:cacheColorHint="#00000000"
                android:gravity="center"    
                android:listSelector="@drawable/categories_list_item_selector" >
            </ListView>

            <ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="300dp"
                android:layout_height="22dp"
                android:adjustViewBounds="true"
                android:background="@android:color/transparent"
                android:scaleType="fitCenter"
                android:src="@drawable/button_plus" />


    </LinearLayout>

ボタンを一番下のListViewに固定したいので、ListViewに0個のアイテムがある場合はボタンが上に移動します... ListViewに多くのアイテムがある場合、Linearの一番下に触れるまでボタンをListViewとして成長させ、その後、ListView はそれ以上の高さを取得しなくなります。

ご協力いただきありがとうございます...

- - -編集 - - - - -

私の完全なレイアウトxmlは次のようなものです

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
tools:context=".ShowFoodOrSupplement" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:scaleType="fitXY"
    android:src="@drawable/main_bg" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:adjustViewBounds="true"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageButton
            android:id="@+id/backButton"
            android:layout_width="15dp"
            android:layout_height="16dp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/transparent"
            android:onClick="backBtnClick"
            android:scaleType="fitXY"
            android:src="@drawable/back_arrow" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="245dp"
            android:layout_height="45dp"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="0dp"
            android:src="@drawable/general_top_image" />

        <TextView
            android:id="@+id/titleTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="8dp"
            android:text="το πρόγραμμά μου"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="12sp" />

    </RelativeLayout>

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:src="@drawable/myprogram_breakfast_image" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:src="@drawable/lines_bg_program_food" />

        <ImageButton
            android:id="@+id/imageButton4"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_marginLeft="40dp"
            android:background="@android:color/transparent"
            android:scaleType="fitXY"
            android:src="@drawable/watch_program" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            android:layout_toRightOf="@id/imageButton4"
            android:text="--:--" />

        <ImageButton
            android:id="@+id/imageButton5"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_centerHorizontal="true"
            android:background="@android:color/transparent"
            android:scaleType="fitXY"
            android:src="@drawable/alarm_icon" />

        <ImageButton
            android:id="@+id/imageButton6"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="40dp"
            android:background="@android:color/transparent"
            android:scaleType="fitXY"
            android:src="@drawable/copy_program" />
    </RelativeLayout>

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:layout_marginTop="3dp"
        android:text="Kcal"
        android:layout_gravity="right"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000" />

    <RelativeLayout
        android:id="@+id/middleLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:orientation="vertical" >

            <ListView
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:cacheColorHint="#00000000"
                android:gravity="center"
                android:listSelector="@drawable/categories_list_item_selector" >
            </ListView>

            <ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="300dp"
                android:layout_height="22dp"
                android:adjustViewBounds="true"
                android:layout_below="@id/listView1"
                android:background="@android:color/transparent"
                android:scaleType="fitCenter"
                android:onClick="PickSomeFood"
                android:src="@drawable/button_plus" />


    </RelativeLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray" />

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="match_parent" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="20dp"
                android:text="σύνολο θερμίδων:" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginRight="20dp"
                android:text="0 Kcal" />
        </RelativeLayout>

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp"
            android:background="@android:color/darker_gray" />
    </LinearLayout>

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

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageButton
                android:layout_width="130dp"
                android:layout_height="35dp"
                android:background="@android:color/transparent"
                android:scaleType="fitXY"
                android:src="@drawable/profile_form_save_button" />

            <TextView
                android:id="@+id/text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_gravity="center"
                android:text="αποθήκευση"
                android:textColor="#ffffff"
                android:textSize="14sp" />
        </FrameLayout>

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/ImageButton02"
                android:layout_width="130dp"
                android:layout_height="35dp"
                android:layout_gravity="center"
                android:background="@android:color/transparent"
                android:scaleType="fitXY"
                android:src="@drawable/profile_form_save_button" />

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_gravity="center"
                android:text="διαγραφή"
                android:textColor="#ffffff"
                android:textSize="14sp" />
        </FrameLayout>
    </LinearLayout>

    <ImageView
        android:id="@+id/imageViewBottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:layout_marginBottom="5dp"
        android:src="@drawable/bottom_schedule" />

</LinearLayout>

だから私は最初の線形が画面の全高を取得し、次に middleLinearLayout の上のすべてのウィジェット内で上に移動し、middleLinearLayout の下の残りの部分が下に移動するようにします... Android:layout_weight="1" を追加することで成功しましただから今、middleLinearLayoutは残りの高さを取得しています...

現在、middleLinearLayout 内に ListView と Button があります...たとえば、ListView アイテムが 2 の場合、ボタンは ListView の下部に固定され、middleLinearLayout の最後までスペースが残ります...

問題は、ListView アイテムが middleLinearLayout の高さを超える場合、ListView の下の UIImageButton が消えることです...

4

2 に答える 2

2

あなたが望むのは、すでに発見したように、を使用して他の2つのビューの間に収まるコンテナ(LinearLayoutまたは)だと思います。RelativeLayoutandroid:weight="1"

ListViewこのコンテナ内では、とが必要ですButton。ボタンは、リスト アイテムのすぐ下に配置する必要があります。

@Malachiasz による答えは正しいです。これは、ボタンが常にあなたの下にあることを意味しますがListView、別の問題が発生しました。ListViewButton

ListView残念ながら、の祖先に個別のサイズを持つ親がある場合、この動作を実現することはできません。ListView個別のサイズ (100 dp)、それ自体に相対的なサイズ ( )、またはwrap_contents親に相対的なサイズ (90%、塗りつぶしなど) のいずれかです。

個別のサイズまたは親に対する相対的なサイズを指定すると、ボタンはリストの下部 (またはコンテナーの下部) に固定されたままになり、追加されるリスト項目に応じて上または下に移動することはありません。ただし、視覚的にはこれで問題ないように見えます。正しく見えるようにするのは簡単です。

ListViewそれ自体に相対的なサイズを指定すると ( ) wrap_contentButtonリストの内容に応じて正しく上または下に移動しますが ListView に高さ以外の祖先がある場合、最終的にが大きくなるwrap_contents位置に入ります。ListViewコンテナよりもボタンが消えます (リストの最後の項目までスクロールすることもできなくなります)。

UI が適切に見え、機能的に正しくなるようにするために、どのアプローチを採用し、どのような考慮事項を行う必要があるかを決定するのは、開発者次第です。

于 2013-11-08T14:23:49.840 に答える
2

LinearLayout の代わりに RelativeLayout を使用し、ImageButton android:layout_below="@id/listView1" のプロパティを設定します。

于 2013-11-08T14:18:57.960 に答える