删除父视图以设置自定义布局视图

时间:2016-03-24 18:13:41

标签: java android view viewgroup

我正在尝试将自定义布局添加到我的设置应用中以获取个性化选项,其中可点击的标题图片启动了网址,但主要偏好设置已经由我的设置活动设置,如何删除父视图我的自定义布局可以膨胀吗?

public class DEMENTED extends SettingsPreferenceFragment implements
        Preference.OnPreferenceChangeListener {
    private static final String TAG = "DEMENTED";
    private static final String KEY_DEMENTED_GITHUB = "https://github.com/cphelps76";
    private static final String KEY_DEMENTED_HEADER = "logo";
    private static final String KEY_GESTURE_SETTINGS = "prefs_gesture";

    Preference mlogo;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.demented_interface, container);
    }

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

        addPreferencesFromResource(R.xml.demented_interface_settings);

        mlogo = findPreference(KEY_DEMENTED_HEADER);

        Utils.updatePreferenceToSpecificActivityFromMetaDataOrRemove(getActivity(),
            getPreferenceScreen(), KEY_GESTURE_SETTINGS);
    }

    @Override
    protected int getMetricsCategory() {
        return MetricsLogger.DEMENTED_INTERFACE;
    }

    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
        if (preference == mlogo) {
            launchUrl(KEY_DEMENTED_GITHUB);
            return true;
        }
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }

    public boolean onPreferenceChange(Preference preference, Object objValue) {
        final String key = preference.getKey();
        return true;
    }

    private void launchUrl(String url) {
        Uri uriUrl = Uri.parse(url);
        Intent whatever = new Intent(Intent.ACTION_VIEW, uriUrl);
        getActivity().startActivity(whatever);
    }
}

1 个答案:

答案 0 :(得分:0)

我通过在OnCreateView中膨胀我的bas首选项视图并查找imageview ID然后使我的图像可点击并设置onclick侦听器来解决我自己的问题

public class DEMENTED extends SettingsPreferenceFragment implements
        Preference.OnPreferenceChangeListener, View.OnClickListener {

    private static final String TAG = "DEMENTED";
    private static final String KEY_DEMENTED_GITHUB = "https://github.com/cphelps76";
    private static final String KEY_GESTURE_SETTINGS = "prefs_gesture";
    private static final String KEY_HARDWARE_KEYS = "prefs_buttons";

    private ImageView mLogoView;

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

        addPreferencesFromResource(R.xml.demented_interface_settings);
        removePreferences();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.preference_list_fragment, parent, false);
        mLogoView = (ImageView)rootView.findViewById(R.id.logo);
        updateView();
        return rootView;
    }

    private boolean hasButtons() {
        return getResources().getInteger(
                com.android.internal.R.integer.config_deviceHardwareKeys) != 0;
    }

    private void removePreference(Preference preference) {
        getPreferenceScreen().removePreference(preference);
    }

    private void removePreferences() {
        Utils.updatePreferenceToSpecificActivityFromMetaDataOrRemove(getActivity(),
        getPreferenceScreen(), KEY_GESTURE_SETTINGS);
        if (!hasButtons()) {
            removePreference(KEY_HARDWARE_KEYS);
        }
    }

    private void updateView() {
        if (mLogoView != null) {
            mLogoView.setClickable(true);
            mLogoView.setOnClickListener(this);
        }
    }

    @Override
    public void onClick(View v) {
        if (v == mLogoView) {
            v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
            launchUrl(KEY_DEMENTED_GITHUB);
        }
    }

    @Override
    protected int getMetricsCategory() {
        return MetricsLogger.DEMENTED_INTERFACE;
    }

    public boolean onPreferenceChange(Preference preference, Object objValue) {
        final String key = preference.getKey();
        return true;
    }

    private void launchUrl(String url) {
        Uri uriUrl = Uri.parse(url);
        Intent demented = new Intent(Intent.ACTION_VIEW, uriUrl);
        getActivity().startActivity(demented);
    }
}