15

我想获取用于在我的 PreferenceActivity 中显示特定 Preference 的 View 实例,因此我可以修改其属性,例如:

public class SettingsActivity extends PreferenceActivity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preference);
        Preference pref = findPreference("key");
        pref.getView().setVisibility(View.GONE);
            //not necessarily setVisibility, i hope you get my point
    }
}

我只找到了这个方法: getView (View convertView, ViewGroup parent)。但我似乎很困惑,如果我想获得我的偏好视图,我需要提供 view 和 viewGroup 作为参数?

有人可以解释如何使用这种方法,或者指出另一种方法来从我的 Preference 实例中获取 View。

PS:如果可能的话,我宁愿不扩展 Preference 类,但如果有必要我不介意

4

3 回答 3

6

要获得所需首选项的视图,您可以使用以下命令:

@Override
public void onWindowFocusChanged(boolean hasFocus)
{
    super.onWindowFocusChanged(hasFocus);
    Preference preference=findPreference(“preferenceKey”);
    View preferenceView=getListView().getChildAt(preference.getOrder());
    //Do your stuff
}

注意:您不能在onCreate方法中执行此操作,因为它会抛出NullPointerException.

于 2015-10-18T14:16:56.413 回答
4

PreferenceActivity 继承ListActivity类。ListActivity 有一个称为getListView()返回显示您的偏好的 ListView 的方法。

编辑:这是我评论中的代码格式:

getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
       // ... put listener code here 
});
于 2011-12-08T13:58:15.893 回答
1

我不确定如何获取首选项的视图,但如果您想从屏幕上删除视图(将可见性设置为 View.gone),您可以使用以下命令:

getPreferenceScreen().removePreference(thePreference)

于 2012-06-13T12:54:45.697 回答