How can I change font size in PreferenceScreen

后端 未结 6 1965
天涯浪人
天涯浪人 2020-11-30 05:12

    

        
相关标签:
6条回答
  • 2020-11-30 05:22

    For me, the layout posted by praneetloke made the widget disappear from preferences that have an associated widget, e.g. a checkbox. There is a LinearLayout with id/widget_frame that is needed for the widget. The following worked for me, on Android 2.3 through 4.2.2. The only change that I needed to make was set android:visibility="gone" on the layout that contains the preference icon, which was not available in Gingerbread.

    <?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:gravity="center_vertical"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:paddingLeft="8dip"
        android:paddingRight="?android:attr/scrollbarSize" >
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:minWidth="0dp"
            android:orientation="horizontal"
            android:visibility="gone" >
    
            <ImageView
                android:id="@+android:id/icon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:minWidth="48dp"
                android:paddingRight="8dip" />
        </LinearLayout>
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:paddingBottom="6dip"
            android:paddingRight="8dip"
            android:paddingTop="6dip" >
    
            <TextView
                android:id="@+android:id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ellipsize="marquee"
                android:fadingEdge="horizontal"
                android:singleLine="true"
                android:textAppearance="?android:attr/textAppearanceMedium" />
    
            <TextView
                android:id="@+android:id/summary"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@android:id/title"
                android:layout_below="@android:id/title"
                android:maxLines="4"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textColor="?android:attr/textColorSecondary" />
        </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:minWidth="48dp"
            android:orientation="vertical" />
    
    </LinearLayout>
    

    References: The default dimensions used in the layout are here GrepCode /res/values/dimens.xml. The actual preference item layout is here GrepCode /res/layout/preference_holo.xml. Note that there is also a non-holo version called preference.xml.

    0 讨论(0)
  • 2020-11-30 05:29

    Finally I was able to solve my problem simply by passing one layout. Maybe this will be helpful to someone. This is my modified preference.xml see below code. We can apply our own properties to pref title and summary.

    preference.xml:

    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
            android:title="First Category"
            android:textSize="20px"
            android:layout="@layout/mylayout">             
    
            <CheckBoxPreference
                android:title="Checkbox Preference"
                android:defaultValue="false"
                android:summary="This preference can be true or false"
                android:key="checkboxPref"
                android:layout="@layout/mylayout"/>
    
        </PreferenceCategory>
    </PreferenceScreen>
    

    mylayout.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    
        <TextView android:id="@android:id/title"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textSize="40sp"/>  
    
        <TextView android:id="@android:id/summary"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textSize="26sp"/>
    
    </LinearLayout>
    

    Please ask me if any queries....Keep Smiling. If this is useful give me one comment.

    0 讨论(0)
  • 2020-11-30 05:30

    You can actually take a look at the layout that is used in the specific platform in layout folder located in:

    <android-sdk>\platforms\android-<level>\data\res\layout
    

    Preferences layouts start with preference_ prefix.

    0 讨论(0)
  • 2020-11-30 05:37

    I modified Kumar's answer to this for ICS and above. I placed this layout in values-v11 to target devices API level 11+.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    
        <TextView android:id="@+android:id/title"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textSize="18dp"
            android:textColor="?android:attr/textColorPrimary"
            android:paddingLeft="8dip"/>
    
        <TextView android:id="@+android:id/summary"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textSize="14dp"
            android:textColor="?android:attr/textColorSecondary"
            android:paddingLeft="8dip"/>
    
    </LinearLayout>
    
    0 讨论(0)
  • 2020-11-30 05:41

    Have a look at my answer to this: Android PreferenceScreen title in two lines.

    You can also change the font itself if you want. Just add this:

    Typeface myTypeface = Typeface.createFromAsset(textView.getContext().getAssets(),"fonts/your_font_name.ttf");
        if (textView != null) {
            textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textView.getContext().getResources().getDimension(R.dimen.text_size_from_dimen));
            textView.setTypeface(myTypeface);
        }
    
    0 讨论(0)
  • 2020-11-30 05:47

    Just a minor revision on the layout code. "@+android:id/summary" is causing Cannot Resolve Symbol for me. so i remove the '+' sign and the code works

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
        <TextView android:id="@android:id/title"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:textSize="40px"/>  
    
        <TextView android:id="@+android:id/summary"
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:textSize="26px"/>
    
    </LinearLayout>
    
    0 讨论(0)
提交回复
热议问题