如何在Android中更改EditTextPreference的dialogMessage字体?

4

如何更改Android中EditTextPreference的dialogMessage字体?

我想要更改默认对话框的字体风格,但我不知道该怎么做!

这是我的自定义EditTextPreference:

public class MyEditTextPreferences extends EditTextPreference {

public MyEditTextPreferences(Context context) {
    super(context);
}


public MyEditTextPreferences(Context context, AttributeSet attrs) {
    super(context, attrs);
}


public MyEditTextPreferences(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}


@Override
protected void onBindView(View view) {
    super.onBindView(view);
    TextView titleView = (TextView) view.findViewById(android.R.id.title);
    TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
    titleView.setTypeface(G.yekanfont);
    summaryView.setTypeface(G.yekanfont);

} 
}

以及这个:

 <com.mydomain.mypackagename.MyEditTextPreferences
    android:defaultValue="300"
    android:dialogMessage="some text"
    android:dialogTitle="some other text"
    android:inputType="number"
    android:key="DURATION_BETWEEN"
    android:title="some text"        
    android:summary="some other text"
     />

2
将 dialogMessage 自定义布局放置并填充其代码的位置 - YFeizi
2个回答

0

您不需要使用自定义的EditTextPreference类。只需按照以下步骤操作:

EditTextPreference preferenceEditText = (EditTextPreference) findPreference(itsKey);
EditText editText = preferenceEditText.getEditText();
//Now do whatever you want with this EditText

要更改标题和摘要的字体,可以在你的styles.xml中进行以下操作:

<style name="PreferenceTheme" parent="@style/AppTheme">
    ...
    <item name="android:fontFamily">@font/lato</item>
    <item name="fontFamily">@font/lato</item>
</style>

不确定哪个有效,所以我把android:fontFamilyfontFamily都放了进去。要应用样式,请转到您的Preference Fragment类:

private ViewGroup parent;
...

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    parent = container;
    ...
}
...
@Override
public void onResume() {
    super.onResume();
    ...
    parent.getContext().setTheme(R.style.PreferenceTheme);
}

0
你需要在onCreateView中完成它。像这样:
@Override
protected View onCreateView(ViewGroup viewGroup) {
    View v = super.onCreateView(viewGroup);
    try {
        TextView titleView = (TextView) v.findViewById(android.R.id.title);
        titleView.setTypeface(G.yekanfont);
        TextView summaryView = (TextView) v.findViewById(android.R.id.summary);
        summaryView.setTypeface(G.yekanfont);
    } catch (Exception e) {
        Log.i("TAG", "Excpetion ", e);
    }

    return v;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接