Créer NumberPicker boîte de dialogue préférences
Je suis en train de créer un NumberPicker dialogue dans mes préférences de l'écran. J'ai déjà fait une suite à cette:https://stackoverflow.com/a/5533295/2442638
Cependant, pour ma deuxième boite de dialogue, je veux seulement un spinner, donc j'ai adapté le code comme suit:
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.NumberPicker;
public class SnoozeTPP extends DialogPreference {
private int Minute = 0;
private NumberPicker np= null;
public static int getMinute(String time) {
String[] pieces = time.split(":");
return (Integer.parseInt(pieces[1]));
}
public SnoozeTPP(Context context, AttributeSet attrs) {
super(context, attrs);
setPositiveButtonText("Set");
setNegativeButtonText("Cancel");
}
@Override
protected View onCreateDialogView() {
np = new NumberPicker(getContext());
return (np);
}
@Override
protected void onBindDialogView(View v) {
super.onBindDialogView(v);
np.setMaxValue(60);
np.setValue(Minute);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
Minute = np.getValue();
String time = 0 + ":" + String.valueOf(Minute);
if (callChangeListener(time)) {
persistString(time);
}
}
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return (a.getString(index));
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
String time = null;
if (restoreValue) {
if (defaultValue == null) {
time = getPersistedString("08:00");
} else {
time = getPersistedString(defaultValue.toString());
}
} else {
time = defaultValue.toString();
}
Minute = getMinute(time);
}
}
Il n'y a pas d'erreurs et de la boîte de dialogue s'affiche correctement, mais la mise en page de ce qui semble être "foiré" :-). La ligne bleue s'étendent à travers le dialogue en entier au lieu de simplement la largeur de la les chiffres.
La question est - comment définir la mise en page correctement? (Je suis sûr qu'il ya beaucoup d'autres erreurs!)
Merci
peut vous aider gist.github.com/tomstrummer/959884
Merci, j'ai essayé, mais je ne pouvais pas le faire fonctionner 🙁
Merci, j'ai essayé, mais je ne pouvais pas le faire fonctionner 🙁
OriginalL'auteur RiThBo | 2013-07-07
Vous devez vous connecter pour publier un commentaire.
J'ai résolu ce problème en utilisant le CyanogenMod nombre de sélecteur.
Fichier Java:
https://github.com/CyanogenMod/android_packages_apps_Trebuchet/blob/cm-10.2/src/com/cyanogenmod/trebuchet/preference/NumberPickerPreference.java
Fichier XML:
https://github.com/CyanogenMod/android_packages_apps_Trebuchet/blob/cm-10.2/res/layout/number_picker_dialog.xml
Attributs:
https://github.com/CyanogenMod/android_packages_apps_Trebuchet/blob/cm-10.2/res/values/attrs.xml#L158
Styleable est ici: github.com/CyanogenMod/android_packages_apps_Trebuchet/blob/...
Cette classe semble référence de la
com.android.internal
paquet. Ai-je besoin pour construire unoriginal-android.jar
tel que décrit ici pour l'utiliser, ou suis-je trop compliquer?OriginalL'auteur RiThBo
Voici un exemple de simple, mais de travail NumberPickerPreference, l'enregistrement valeur entière entre 1 et 100:
NumberPickerPreference.java:
OriginalL'auteur Alexander Farber
Ce n'est plus une solution de contournement qu'une solution, mais j'espère que cela aide. L'ajout d'un mannequin textView résolu le problème. J'ai exactement le même problème.
Mon Fichier xml:
et
est une Chaîne vide. C'est peut-être aussi assez pour n'utiliser qu'une vue à la place d'un textView.
s'il vous plaît partager comment vous avez résolu le problème pour les autres utilisateurs peuvent le faire aussi bien.
J'ai utilisé le CyanogenMod. Ses sur GitHub quelque part, j'ai cherché le fichier exact, mais je ne le retrouve plus. Désolé
hey @RiThBo, comment avez-vous résolu ce problème de la ligne bleue qui s'étend tout le chemin à travers le dialogue?
Je n'ai pas trouvé le lien vers le GitHub de fichier, mais j'ai posté une réponse contenant la majeure partie du code.
OriginalL'auteur KelvinGradCelsius
retour un LinearLayout dans onCreateDialogView plutôt que NumberPicker comme ci-dessous:
OriginalL'auteur Robert