Android获取PreferenceActivity中的Preference视图

hen*_*rix 10 android view preference preferenceactivity

我想获取用于在我的PreferenceActivity中显示特定首选项的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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

有人可以解释如何使用此方法,或指向另一种方法从我的Preference实例获取View.

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

Thu*_*der 7

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

\n\n
@Override\npublic void onWindowFocusChanged(boolean hasFocus)\n{\n    super.onWindowFocusChanged(hasFocus);\n    Preference preference=findPreference(\xe2\x80\x9cpreferenceKey\xe2\x80\x9d);\n    View preferenceView=getListView().getChildAt(preference.getOrder());\n    //Do your stuff\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n

  • 我使用 getListView.getChildCount() ,它只返回 0。我不知道为什么。 (2认同)

Pat*_*ick 1

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

getPreferenceScreen().removePreference(thePreference)