web-dev-qa-db-ja.com

PreferenceScreenでフォントサイズを変更するにはどうすればよいですか

<PreferenceScreen xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <PreferenceCategory
        Android:title="First Category"
        Android:textSize="20px">

        <CheckBoxPreference
            Android:title="Checkbox Preference"
            Android:defaultValue="false"
            Android:summary="This preference can be true or false"
            Android:key="checkboxPref" />

    </PreferenceCategory>
</PreferenceScreen>

Android:titleフォントサイズをPrefereceCategoryCheckboxPreference、およびAndroid:summaryサイズに変更する必要があります。これらのタグにはAndroid:textSize属性はありません。誰かがこれを取得する方法を教えてもらえますか?

19
Anil Kumar

最終的に、1つのレイアウトを渡すだけで問題を解決することができました。多分これは誰かに役立つでしょう。これは私の変更したpreference.xmlです。以下のコードを参照してください。独自のプロパティを設定のタイトルと概要に適用できます。

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>

何か質問があれば私に聞いてください....笑顔を保ちます。これが役立つ場合は、コメントを1つください。

58
Anil Kumar

私の場合、praneetlokeによって投稿されたレイアウトにより、ウィジェットは、ウィジェットが関連付けられている設定から消えました。チェックボックス。ウィジェットに必要なid/widget_frameを持つLinearLayoutがあります。 Android 2.3から4.2.2まで。私が行う必要がある唯一の変更は、設定アイコンを含むレイアウトにAndroid:visibility = "gone"を設定することでした。これは、ジンジャーブレッドでは利用できませんでした。

<?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>

参照:レイアウトで使用されるデフォルトの寸法はここにあります GrepCode /res/values/dimens.xml 。実際の設定項目のレイアウトはここにあります GrepCode /res/layout/preference_holo.xml 。設定.xmlと呼ばれる非ホロバージョンもあることに注意してください。

11
Yojimbo

ICS以上の場合、これに対するKumarの回答を変更しました。このレイアウトをvalues-v11に配置して、デバイスAPIレベル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>
4
praneetloke

実際には、次の場所にあるレイアウトフォルダの特定のプラットフォームで使用されているレイアウトを確認できます。

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

プリファレンスレイアウトはpreference _プレフィックスで始まります。

2
Tomask

これに対する私の答えを見てください: 2行のAndroid PreferenceScreenタイトル

必要に応じて、フォント自体を変更することもできます。これを追加するだけです:

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
Codes12

レイアウトコードのマイナーな改訂。 「@ + Android:id/summary」が原因で、シンボルを解決できません。だから私は「+」記号を削除し、コードは機能します

<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
Setiawan