PreferenceFragment膨胀到CardView上

时间:2015-07-17 03:33:08

标签: android android-cardview preferencefragment

我很难让layout_height正确地将PreferenceFragment夸大到CardView上。

一切正常,包括NestedScrollView以折叠我的工具栏,但由于某种原因,我的偏好设置只填充列表的第一个位置。它是可滚动的,但它需要填满整张卡片。

关于这里可能会发生什么的任何想法?

编辑:这肯定是导致问题的NestedScrollView。现在,如果我能找到解决方法..

我可能也不完全理解卡片,因为其他布局,我似乎无法让它们完全填满视图,减去一点点边缘。

这是我的PreferenceFragment XML

<android.support.v7.widget.CardView

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/tools"

android:id="@+id/cardview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:elevation="100dp"
android:layout_gravity="center"
android:layout_margin="10dp"
card_view:cardBackgroundColor="@color/cardview_initial_background"
card_view:cardCornerRadius="10dp"

app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.v4.widget.NestedScrollView

    android:id="@+id/nestedScrollView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="@dimen/scrollview_padding_default" >

    <LinearLayout

        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:background="@android:color/transparent">

        <ListView

            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="0px"
            android:layout_weight="1"
            android:paddingTop="0dip"
            android:paddingBottom="@dimen/preference_fragment_padding_bottom"
            android:paddingLeft="@dimen/preference_fragment_padding_side"
            android:paddingRight="@dimen/preference_fragment_padding_side"
            android:scrollbarStyle="@integer/preference_fragment_scrollbarStyle"
            android:clipToPadding="false"
            android:drawSelectorOnTop="false"
            android:cacheColorHint="@android:color/transparent"
            android:scrollbarAlwaysDrawVerticalTrack="true" />

        <TextView

            android:id="@android:id/empty"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="@dimen/preference_fragment_padding_side"
            android:gravity="center"
            android:visibility="gone" />

        <RelativeLayout

            android:id="@+id/button_bar"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:layout_weight="0"
            android:visibility="gone">

            <Button

                android:id="@+id/back_button"
                android:layout_width="150dip"
                android:layout_height="wrap_content"
                android:layout_margin="5dip"
                android:layout_alignParentLeft="true"
                android:text="@string/back_button_label"/>

            <LinearLayout

                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true">

                <Button

                    android:id="@+id/skip_button"
                    android:layout_width="150dip"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dip"
                    android:text="@string/skip_button_label"
                    android:visibility="gone"/>

                <Button

                    android:id="@+id/next_button"
                    android:layout_width="150dip"
                    android:layout_height="wrap_content"
                    android:layout_margin="5dip"
                    android:text="@string/next_button_label"/>

            </LinearLayout>

        </RelativeLayout>

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

</android.support.v7.widget.CardView>

我的PreferenceFragment Java,通货膨胀发生在那里:

package app.my.sample;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import app.my.sample.R;

public class SettingsPreferenceFragment extends PreferenceFragment {

public static final String ARG_PAGE = "ARG_PAGE";

private int mPage;

public static SettingsPreferenceFragment newInstance(int page) {

    Bundle args = new Bundle();
    args.putInt(ARG_PAGE, page);
    SettingsPreferenceFragment fragment = new SettingsPreferenceFragment();
    fragment.setArguments(args);

    return fragment;

}

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    mPage = getArguments().getInt(ARG_PAGE);
    addPreferencesFromResource(R.xml.preferences);

}

@Override
public View onCreateView(LayoutInflater paramLayoutInflater, ViewGroup paramViewGroup, Bundle paramBundle) {

    return paramLayoutInflater.inflate(R.layout.fragment_preference_list, paramViewGroup , false);

    //return super.onCreateView(paramLayoutInflater, paramViewGroup, paramBundle);

}

}

1 个答案:

答案 0 :(得分:2)

这是一个古老的问题,但也许有人会觉得这个答案很有用。 尝试将属性android:fillViewport="true"添加到NestedScrollView