PreferenceScreen android:paddingTop不能正常工作

时间:2015-04-01 00:55:22

标签: android android-actionbar preferencefragment

使用普通的布局文件,我可以像这样设置填充

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize"

>

但是,使用首选项屏幕时,它会使填充区域缺少某些像素(操作栏为168 dp,但填充区仅显示为144),任何想法如何修复此跨设备方式。感谢。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingTop="?attr/actionBarSize">

1 个答案:

答案 0 :(得分:1)

使用PreferenceScreen时,您无权访问这些xml属性。但你可以做的是将此属性添加到它:

android:layout="@layout/header_setting"

然后创建一个在此示例中调用的XML布局文件“header_settings”,您可以正常更改大小和填充。但是将ID应用于元素,PreferenceScreen知道标题的位置或图标。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:padding="0dp"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+android:id/icon"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="15dp"
        android:layout_width="40dp"
        android:layout_height="40dp" />

    <TextView android:id="@+android:id/title"
        android:layout_marginLeft="80dp"
        android:textColor="#000"
        android:layout_marginTop="23dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"/>
</LinearLayout>

现在,这是一个关于PreferenceScreen应该如何显示的示例:

    <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout="@layout/pref_screen">


    <PreferenceCategory>
        <PreferenceScreen
            android:icon="@drawable/setting_star"
            android:layout="@layout/header_setting"
            android:title="Upgrade to Pro!">

        </PreferenceScreen>
    </PreferenceCategory>
</PreferenceScreen>

请注意您只能访问属性:标题,摘要和图标。 layout属性允许您将其自定义为您想要执行的任何操作。在XML中,你必须保持id的相同,因为PreferenceScreen知道如何放置标题文本或图标图像。

我希望这有帮助!