繁体   English   中英

ListView背景

[英]ListView Background

我有一个ListView,它有一个页眉和页脚。 它们在CardView中的布局。 和内容列表,其中必须有背景。 这是一张清晰可见的图片:我现在是这样的:

在此处输入图片说明

以及如何做:

在此处输入图片说明

我这样做了,ScrollView>第一个容器>第二个容器中的listView>第三个容器。 但是,不幸的是,在容器2的底部是一个巨大的空白空间!

是否可以实现内置的ListView? 如果可以的话,如何执行?

更新

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Details.Book.BookDetails"
android:background="@color/fragment_bg">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"/>

<View android:layout_width="match_parent"
    android:layout_height="3dp"
    android:background="@drawable/toolbar_shadow"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/toolbar"
    android:id="@+id/view5" />

<ScrollView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/scrollView6"
    android:layout_below="@+id/toolbar">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_below="@+id/toolbar"
            android:id="@+id/linearLayout16">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:background="@drawable/rounded_top_layout"
                android:paddingBottom="@dimen/leftPadding"
                android:paddingLeft="@dimen/rightPadding"
                android:paddingRight="@dimen/rightPadding"
                android:paddingTop="@dimen/leftPadding">

                <TextView
                    android:id="@+id/textviewTitle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="false"
                    android:layout_centerVertical="true"
                    android:text="@string/buy_det_pass_txt"
                    android:textColor="@color/background_color"
                    android:textSize="@dimen/mainLargeSize" />
            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/relativeLayout9"
                android:paddingBottom="@dimen/leftPadding"
                android:paddingLeft="@dimen/rightPadding"
                android:paddingRight="@dimen/rightPadding"
                android:paddingTop="@dimen/leftPadding">

                <LinearLayout
                    android:id="@+id/linearLayout4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/relativeLayout9"
                    android:layout_marginBottom="@dimen/textMargin"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/buy_det_fullname"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:id="@+id/tvFullName"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="right"
                        android:text="Medium Text"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/linearLayout3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/linearLayout4"
                    android:layout_marginBottom="@dimen/textMargin"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/buy_det_gender"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:id="@+id/tvGender"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="right"
                        android:text="Medium Text"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/linearLayout6"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/linearLayout3"
                    android:layout_marginBottom="@dimen/textMargin"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/buy_det_ticknumber"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:id="@+id/tvTickNumber"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="right"
                        android:text="Medium Text"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/linearLayout7"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/linearLayout6"
                    android:layout_marginBottom="@dimen/textMargin"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="@string/buy_det_issdate"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:id="@+id/tvIssDate"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="right"
                        android:text="Medium Text"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

            </RelativeLayout>

        </LinearLayout>

        <kz.tem_tour.Primer.MainActivity.NonScrollListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView"
            android:layout_centerHorizontal="true"
            android:paddingRight="@dimen/textMargin"
            android:paddingLeft="@dimen/textMargin"
            android:layout_below="@+id/linearLayout16" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_below="@+id/listView">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:background="@drawable/rounded_top_layout"
                android:paddingTop="@dimen/leftPadding"
                android:paddingBottom="@dimen/leftPadding"
                android:paddingLeft="@dimen/rightPadding"
                android:paddingRight="@dimen/rightPadding">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/buy_det_cost_txt"
                    android:id="@+id/tvFromTo"
                    android:textColor="@color/background_color"
                    android:textSize="@dimen/mainLargeSize"
                    android:layout_alignParentTop="false"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_centerVertical="true" />
            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/relativeLayout9"
                android:paddingRight="@dimen/rightPadding"
                android:paddingLeft="@dimen/rightPadding"
                android:paddingTop="@dimen/leftPadding"
                android:paddingBottom="@dimen/leftPadding">

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/relativeLayout9"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:id="@+id/linearLayout4"
                    android:gravity="center_vertical"
                    android:layout_marginBottom="@dimen/textMargin" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/buy_det_fare"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Medium Text"
                        android:id="@+id/tvFare"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:gravity="right"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/linearLayout4"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:id="@+id/linearLayout3"
                    android:gravity="center_vertical"
                    android:layout_marginBottom="@dimen/textMargin">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/buy_det_taxes"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Medium Text"
                        android:id="@+id/tvTaxes"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:gravity="right"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/linearLayout3"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:id="@+id/linearLayout6"
                    android:gravity="center_vertical"
                    android:layout_marginBottom="@dimen/textMargin">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/buy_det_service_fees"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Medium Text"
                        android:id="@+id/tvFees"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:gravity="right"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/linearLayout6"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:id="@+id/linearLayout7"
                    android:gravity="center_vertical"
                    android:layout_marginBottom="@dimen/textMargin">

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/buy_det_total_price"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Medium Text"
                        android:id="@+id/tvTotPrice"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:gravity="right"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/linearLayout7"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:id="@+id/linearLayout15"
                    android:gravity="center_vertical"
                    android:layout_marginBottom="@dimen/textMargin" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@string/buy_det_form_of_pay"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:textSize="@dimen/mainSmallSize" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Medium Text"
                        android:id="@+id/tvPayment"
                        android:layout_weight="1"
                        android:textColor="@color/mainGreyColor"
                        android:gravity="right"
                        android:textSize="@dimen/mainMiddleSize" />
                </LinearLayout>

            </RelativeLayout>

        </LinearLayout>
    </LinearLayout>
</ScrollView>

</RelativeLayout>

我有解决方案..不是一个健康的解决方案,但它应该为您工作。

而不是添加页眉和页脚,将所有三个布局包装在ScrollView

<ScrollView ... >

    <CardView ... /> <!-- this will be header -->

    <CardView ...>

        <yourpackagename.NonScrollListView ... /> <!-- non scrollable listview -->

    </CardView>

    <CardView ... /> <!-- this will footer -->

</ScrollView>  

这是NonScrollListView的类

public class NonScrollListView extends ListView {

    public NonScrollListView(Context context) {
        super(context);
    }

    public NonScrollListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
        ViewGroup.LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();
    }
}

在CardView中添加列表视图,并在该Cardview上方添加在不同卡片视图中添加页眉,并在ListView cardview下在cardview中添加相同页脚。 并添加整个布局是scrollview。 在运行时计算listview的高度并将高度添加到listview。 您的自定义外观已准备就绪。

公共静态无效setTotalHeightofListView(ListView listView){

ListAdapter mAdapter = listView.getAdapter();

int totalHeight = 0;

for (int i = 0; i < mAdapter.getCount(); i++) {
    View mView = mAdapter.getView(i, null, listView);

    mView.measure(
            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),

            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

    totalHeight += mView.getMeasuredHeight();
    Log.w("HEIGHT" + i, String.valueOf(totalHeight));

}

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM