2012-03-02 63 views
11

之前,我要求刪除PreferenceActivity/PreferenceFragment的填充:Android:如何調整偏好/填充偏好?

Android: How to maximize PreferenceFragment width (or get rid of margin)?

這有麻煩標題文本之前調整量/填充我的時間。 (見下圖)。

enter image description here

沒有任何人有任何想法?

+0

喜@jclova,我面對同樣的問題,我不想通過自定義佈局複選框。你是如何擺脫這個問題的。 – Dory 2013-08-29 11:01:52

+0

我懷疑,你看到左側填充是一個「空的」'android:icon'。你應該儘可能提供你自己的drawable,並且看看它是否有幫助。 – Stan 2013-11-02 20:38:34

回答

9

你可以定製你複選框這樣的: MyPreference.xml

<CheckBoxPreference android:key="testcheckbox" 
    android:title="Checkbox Title" 
    android:summary="Checkbox Summary..." 
    android:layout="@layout/custom_checkbox_preference_layout"> 
</CheckBoxPreference> 

和custom_checkbox_preference_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:gravity="center_vertical" 
    android:paddingLeft="16dip" 
    android:paddingRight="?android:attr/scrollbarSize"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:minWidth="0dp" 
     android:gravity="center" 
     android:orientation="horizontal"> 
     <ImageView 
      android:id="@+android:id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      /> 
    </LinearLayout> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="6dip" 
     android:layout_marginTop="6dip" 
     android:layout_marginBottom="6dip" 
     android:layout_weight="1"> 

     <TextView android:id="@+android:id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:ellipsize="marquee" 
      android:fadingEdge="horizontal" /> 

     <TextView android:id="@+android:id/summary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@android:id/title" 
      android:layout_alignLeft="@android:id/title" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textColor="?android:attr/textColorSecondary" 
      android:maxLines="4" /> 

    </RelativeLayout> 

    <!-- Preference should place its actual preference widget here. --> 
    <LinearLayout android:id="@+android:id/widget_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:orientation="vertical" /> 

</LinearLayout> 

一點就是Android:minWidth = 「0dp」。

+0

您好先生,我爲CheckBoxPreference使用自定義佈局。但我的問題是ID爲「@ + android:id/widget_frame」的線性佈局在其左側和右側有一些填充。如何刪除它。感謝提前。 – 2014-04-09 12:53:13

8

對於任何面臨此問題並且不想通過自定義佈局的人。我想指出的是,加入:

android:icon="@null" 

解決了我的問題與左側的空白空間。

<PreferenceScreen android:icon="@null" android:title="Your title" android:summary="Your summary" /> 
0

通過user1482130工作也適用於其他類型的偏好,如listpreferences描述沒有修改的custom_checkbox_preference_layout.xml!非常有用的

android:layout="@layout/custom_checkbox_preference_layout"> 
0

如果要創建喜好動態傳遞ContextThemeWrapper作爲參數傳遞給新的偏好

TypedValue themeTypedValue = new TypedValue(); 
getActivity().getTheme().resolveAttribute(R.attr.preferenceTheme, themeTypedValue, true); 
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(getActivity(), themeTypedValue.resourceId); 
Preference preference = new Preference(contextThemeWrapper); 

我發現它在這篇文章中:Dynamically creating Preference Screens on Android