15

これを実装するための簡単なものが欠けていると確信していますが、私が探しているものを機能させるために思いつくことができるすべての既知の組み合わせを実行しました。ListView アイテムがページを埋めないときに、ListView フッターを画面の下部に配置しようとしています。

たとえば、3 つの項目の ListView と FooterView (ListView の addFooterView を使用) を含むページがあり、その footerView を画面の下部に配置したいと考えています。ListView に画面をスクロールするのに十分な項目が含まれている場合、footerView は (画面の下部ではなく) リストの最後に配置する必要があります。

私が使用しようとしている XML を以下に示します。どんな助けでも大歓迎です!

レイアウト.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@+drawable/background">
<ListView
    android:id="@+id/menu" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:listSelector="@android:color/transparent"
    android:divider="@null">
</ListView></RelativeLayout>

ListViewRow.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
style="@style/Nationwide.menu">
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/nav_item"
    style="@style/Nationwide.menu.row">
    <ImageView 
        android:id="@+id/image_icon"
        style="@style/Nationwide.menu.leftIcon" />
    <TextView 
        android:id="@+id/nav_text" 
        style="@style/Nationwide.menu.text" />
    <ImageView
        android:id="@+id/chevron_symbol"
        style="@style/Nationwide.menu.rightIcon" />
</LinearLayout>
<View
    android:layout_height="1dp"
    android:background="@drawable/nav_item_divider_dark" />
<View
    android:layout_height="1dp"
    android:background="@drawable/nav_item_divider_light" /></LinearLayout>

ListViewFooter.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true">
<View 
    android:id="@+id/footer_image"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true" /></RelativeLayout>

ジャワ

    LayoutInflater inflater = this.getLayoutInflater();
    View footerView = inflater.inflate(R.layout.footer, null);

    footerView.findViewById(R.id.footer_image).setBackgroundDrawable(resources.getDrawable(R.drawable.cone_footer));

    mMenuListView.addFooterView(footerView);

これまでに試したことは次のとおりです。

  • 上記のようにフッター ビューを追加する
  • ListView の背景としてドローアブル リソースを追加します (これにより、ListView が画面の幅全体にまたがらず、9 パッチの伸縮可能な領域が原因で奇妙な方法でスクロールするようになりました)
  • レイアウトの別のビューとして、cone_footer を追加する

前もって感謝します!

4

5 に答える 5

16

そのフッタービューを画面の下部に配置したい。

それはどのようにaddFooterView()機能するかではありません。

ListView に画面をスクロールするのに十分な項目が含まれている場合、footerView は (画面の下部ではなく) リストの最後に配置する必要があります。

それもそうではありませんaddFooterView()

リストとともにスクロールする場合 (つまり、3 つのリスト項目が画面の上半分を占める場合、フッターは 3 つの項目のすぐ下にある場合)、addFooterView()... を使用しますが、フッターは常にリストと共にスクロールします。 .

リストと一緒にスクロールしないようにしたい場合、1つの方法は、をRelativeLayout親として使用し、フッターを画面の下部に固定しListView、上部とフッターの間に配置することです...しかし、フッターは決してスクロールします。

于 2010-06-22T14:21:17.743 に答える
3

他の人が同様の答えを探している場合に備えて、私が抱えていた問題を解決するために私がやったことは次のとおりです。私が追加しようとしていた「フッター」は、画面の一部のスペースを埋めるための単なる画像であり (ビューが短い場合)、ListView アプローチは私の実装に必要なものではなかったため、最終的にこれになりました。 XML レイアウトとして:

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.example.android.apis"
    style="@style/company.mainContainer">

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <!-- enter page content here -->

        <View android:layout_height="0px" android:layout_weight="1"
            android:visibility="invisible" />

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:scaleType="fitXY"
            android:src="@drawable/footer_cone">
        </ImageView>

    </LinearLayout>

</ScrollView>

これが他の人に役立つことを願っています!

于 2010-07-26T17:41:41.840 に答える
1

あなたがやろうとしていることは、実際にはかなり複雑です。「フッター」をリストと一緒にスクロールする必要があります(少なくとも場合によっては)。つまり、ListViewレイアウト内に含める必要があります。ただし、(場合によっては)同じフッターを画面に対して、より正確にはListViewの親レイアウト(または親-親など)に対して配置する必要があります。つまり、フッターを含める必要はありません。 ListView内。これらの2つのシナリオでは、問題の要素を相互に排他的に配置する必要があります。

ただし、これはSDK側の設計としては貧弱ではありません。あなたの説明から、あなたは問題について間違った方法で考えているかもしれないようです。この要素は、概念的には、リストの「足元」にあるとは限らないが、画面の一番下にある場合もあるので、本当にフッターですか?ListViews、ScrollViews、RelativeLayouts、およびandroid:layout_heightのトリックを組み合わせることで、必要な種類のレイアウトを作成できる場合があります。ただし、単に設計に別のアプローチをとる方がよい場合があります。

于 2010-06-22T14:36:11.317 に答える
1

同じ このように

<RelativeLayout>
    <include android:id="@+id/header" layout="@layout/header" android:layout_width="fill_parent" android:layout_alignParentTop="true" />

    <include android:id="@+id/footer" layout="@layout/footer" android:layout_width="fill_parent" android:layout_alignParentBottom="true" /> 

    <ListView android:layout_below="@id/header" android:layout_above="@id/footer"/> 
</RelativeLayout>
于 2012-04-15T06:24:44.550 に答える