簡體   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