动态添加的首选项的文本太大

时间:2016-01-20 04:05:28

标签: android android-layout android-preferences android-styles

我想在运行时添加Preference。问题是,它们看起来与静态定义的Preference不同。我想我可能需要将AttributeSet传递给构造函数,但我不知道如何获取系统的默认AttributeSet。

如何使动态添加的Preference看起来像静态的?

import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.support.v7.preference.PreferenceManager;

public static class MyPref extends PreferenceFragmentCompat
{
    @Override
    public void onCreatePreferences(Bundle bundle, String s)
    {
        addPreferencesFromResource(R.xml.my_preferences);

        final PreferenceCategory category1 = (PreferenceCategory) findPreference("category1");
        Preference p = new Preference(this.getContext());
        p.setTitle("Santos L. Helper");
        p.setSummary("Dynamically added");
        category1.addPreference(p);

enter image description here

1 个答案:

答案 0 :(得分:0)

更改

Preference p = new Preference(this.getContext());

Preference p = new Preference(category1.getContext());

解决了这个问题。我想这里的教训是始终使用最近祖先的上下文。