2016-03-24 9 views
0

Ich versuche, ein benutzerdefiniertes Layout zu meiner Einstellungs-App für Personalisierungsoptionen mit einem klickbaren Headerbild hinzuzufügen, das eine Web-URL startet, aber das Hauptpräferenzlayout ist bereits durch meine Einstellungen aktiviert , wie kann ich die Elternansicht entfernen, damit mein benutzerdefiniertes Layout aufgeblasen werden kann?Entfernen der übergeordneten Ansicht zum Festlegen einer benutzerdefinierten Layoutansicht

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); 
    } 
} 

Antwort

0

ich mein eigenes Problem gelöst, indem in OnCreateView meine bas Vorliebe Ansicht Aufblasen und die Imageview-ID zu finden, und dann mein Bild anklickbar machen und Einstellen eines Onclick Zuhörer

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); 
    } 
}