5

の設定リストに表示されるカスタム設定 (つまり、カスタム レイアウトの設定) を作成しましたPreferenceActivity

レイアウトはコードで作成されます。問題は、コードで作成された TextView のフォントが、Android の標準設定フォントとは多少異なって見えることです。

したがって、解決策は、Android の好みのスタイル属性を my に適用することTextViewです。それぞれのスタイルは、preferenceScreenStyleまたはpreferenceStyleである必要があります(よくわかりません)。

私の問題は、アンドロイドの標準スタイル属性を読み取る方法がわからないため、コードで設定できることです。

4

3 に答える 3

6

私は同じ問題を抱えていますが、一部のモバイル デバイス、HTC Saphire および Samsung Galaxy S で修正しましたが、HTC Desire HD に問題があります。android_SDK_resurces/layout/preference.xml で標準の設定スタイルを確認できます。マージン、テキストサイズ、....

于 2010-12-22T11:25:46.950 に答える
4

ネクロには申し訳ありませんが、好みのスタイリングに関するSOの質問について、この回答を見つけることができませんでした。私はついに答えを見つけました。デフォルトの設定では、layout/preference_material. Android ソースのここで、それと他のより具体的なレイアウトを見ることができます。リンクが壊れた場合に備えて、以下にコピーします。

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<!-- Layout for a Preference in a PreferenceActivity. The
     Preference is able to place a specific widget for its particular
     type in the "widget_frame" layout. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/listPreferredItemHeightSmall"
    android:gravity="center_vertical"
    android:paddingStart="?attr/listPreferredItemPaddingStart"
    android:paddingEnd="?attr/listPreferredItemPaddingEnd"
    android:background="?attr/activatedBackgroundIndicator"
    android:clipToPadding="false">
    <LinearLayout
        android:id="@+id/icon_frame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="-4dp"
        android:minWidth="60dp"
        android:gravity="start|center_vertical"
        android:orientation="horizontal"
        android:paddingEnd="12dp"
        android:paddingTop="4dp"
        android:paddingBottom="4dp">
        <com.android.internal.widget.PreferenceImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:maxWidth="48dp"
            android:maxHeight="48dp" />
    </LinearLayout>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingTop="16dp"
        android:paddingBottom="16dp">
        <TextView android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:textAppearance="?attr/textAppearanceListItem"
            android:ellipsize="marquee" />
        <TextView android:id="@+id/summary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/title"
            android:layout_alignStart="@id/title"
            android:textAppearance="?attr/textAppearanceListItemSecondary"
            android:textColor="?attr/textColorSecondary"
            android:maxLines="10"
            android:ellipsize="end" />
    </RelativeLayout>
    <!-- Preference should place its actual preference widget here. -->
    <LinearLayout android:id="@+id/widget_frame"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="end|center_vertical"
        android:paddingStart="16dp"
        android:orientation="vertical" />
</LinearLayout>
于 2016-10-17T16:02:48.213 に答える
1

現在のカスタム設定のレイアウトリソースを、EditTextPreferenceなどの標準設定で使用されるレイアウトリソースに置き換えることで、これを解決することができました。たとえば、コード例を次に示します。TimePreferenceがカスタム設定であることに注意してください。

    TimePreference wake_time = (TimePreference)findPreference("wake_time");
    EditTextPreference exercise = (EditTextPreference)findPreference("exercise");
    int r = exercise.getLayoutResource();
    wake_time.setLayoutResource(r);
于 2013-01-27T19:47:03.420 に答える