3

我的应用程序中有 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");
    }
}
4

0 回答 0