- Forum-Beiträge: 434
27.10.2014, 08:07:09 via Website
27.10.2014 08:07:09 via Website
Hallo,
ich möchte mittels einer Custom ListView
eine RingtonePreference
nachbauen da die normale, also von Android bereitgestellte, sich nicht themen lässt.
So gesehen funktioniert alles. Bis auf die Kleinigkeit, dass ich schwer mit Darstellungsfehlern zu kämpfen habe.
Sprich die Liste wird zwar dargestellt, aber je nach Gerät kann es sein, dass entweder ein Teil unten abgeschnitten wird (das ist sehr schlecht, dann kann man nämlich nicht "OK" drücken, um den Warnton auszuwählen) oder die View ist verschoben und zeigt oben ein paar Einträge an, in der Mitte dann die Überschift (DialogTitle
) und unten wieder ein paar Einträge. Das ist natürlich ebenso Mist. Gerade weil dann noch dazu kommt, dass wenn man auf die oberen Einträge klickt die Liste einfach "abhaut"
Habe jetzt schon ein paar lange Nächte dran gesessen und stehe am Rand der Verzweiflung. Es kann doch nicht so schwierig sein, einfach nur eine Liste umzuthemen?! oO
Hier der Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="500dp"
android:orientation="vertical">
<TextView
android:id="@+id/dialog_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:textColor="@color/white"
android:textSize="22sp"/>
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@color/blue_app_color"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:listSelector="@color/blue_app_color"/>
</LinearLayout>
</LinearLayout>
Und hier die Methode, die die Liste "erstellen" soll...
@Override
protected View onCreateDialogView() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor = preferences.edit();
String mThemeSettings = MyVars.THEME_KEY_DEFAULT;
// Theme-Einstellungen
if (preferences.contains(MyVars.SETTING_THEME)) {
mThemeSettings = preferences.getString(MyVars.SETTING_THEME, MyVars.THEME_KEY_DEFAULT);
} else {
editor.putString(MyVars.SETTING_THEME, mThemeSettings);
editor.apply();
}
// View für Rückgabe anlegen
View view;
if (mThemeSettings.equals(MyVars.THEME_KEY_2)) {
view = View.inflate(mContext, R.layout.custom_list_preference_black, null);
} else view = View.inflate(mContext, R.layout.custom_list_preference_white, null);
mDialogTitle = getDialogTitle();
if (mDialogTitle == null) mDialogTitle = getTitle();
((TextView) view.findViewById(R.id.dialog_title)).setText(mDialogTitle);
ListView list = (ListView) view.findViewById(android.R.id.list);
ArrayAdapter<CharSequence> adapter;
if (mThemeSettings.equals(MyVars.THEME_KEY_2)) {
adapter = new ArrayAdapter<CharSequence>(
getContext(), R.layout.btn_radio_black,
getEntries());
} else {
adapter = new ArrayAdapter<CharSequence>(
getContext(), R.layout.btn_radio_white,
getEntries());
}
// Adapter setzen
list.setAdapter(adapter);
// Achtung: vorher Clickable setzen, sonst werden die Vorgaben nicht angenommen...
list.setClickable(true);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
list.setItemChecked(findIndexOfValue(mPath), true);
list.setOnItemClickListener(this);
return view;
}
Bin für jede Hilfe dankbar.
Beste Grüße
Martin
— geändert am 27.10.2014, 08:08:07
Open Source
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.