我的应用程序中有PreferenceActivity,我想为EditTextPreference指定自定义布局。
我在具有android:layout
属性的xml文件中执行此操作。一切都好,布局正在改变,但我无法更改其字段的任何值。代码运行没有错误,在调试中我可以看到值已更改,但在视觉上没有更改。
我试图打电话给view.invalidate()
和onContentChanged()
,但没有改变。
所有ID都可以,并且不会抛出任何异常。所以我不知道。我很感激你的帮助。
以下是我的preferences_file_types.xml的代码:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:key="@string/preference_category_file_types"
android:title="@string/settings_supported_file_types" >
<EditTextPreference
android:key="@string/preference_file_type_image"
android:layout="@layout/file_types_list_item"
android:title="@string/settings_supported_file_types_hint" />
</PreferenceCategory>
</PreferenceScreen>
以下是我的PreferenceActivity类的代码:
public class FileTypesSettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_file_types);
LayoutInflater inflater = getLayoutInflater();
EditTextPreference imageTypePreference = (EditTextPreference) findPreference(getString(R.string.preference_file_type_image));
View specifiedView = inflater.inflate(imageTypePreference.getLayoutResource(), null);
changeViewAttributes(specifiedView);
}
private void changeViewAttributes(View view) {
ImageView fileTypeIcon = (ImageView) view.findViewById(R.id.file_types_list_item_iv_icon);
fileTypeIcon.setBackgroundResource(R.drawable.ic_file_image);
TextView fileTypePredefined = (TextView) view.findViewById(R.id.file_types_list_item_tv_predefined_extensions);
fileTypePredefined.setText("JPG BMP GIF PNG");
TextView fileTypeAdded = (TextView) view.findViewById(R.id.file_types_list_item_tv_added_extensions);
fileTypeAdded.setText("BLA BLA BLA");
}
}