7
votes

Pourquoi ListView reste-t-il au-dessus de TextView dans la boîte de dialogue ListPrreference?

J'ai besoin de créer une boîte de dialogue ListPrreference personnalisé afin que je puisse ajouter du texte d'en-tête (une TextView) au-dessus de la liste (listeView). J'ai créé la classe MyListPreference qui étend listPréférence et remplace OncreateDialogView (): XXX PRE>

My XML Disposition dialog_preference_list.xml Contient: P>

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:textAppearance="?android:attr/textAppearanceSmall">

</TextView>


3 commentaires

Pouvez-vous ajouter le code dans lequel vous initialisez les valeurs de la liste? ou n'importe quel code qui fait référence au listview


Juste pour être clair, vous avez essayé: android: layout_above = "@ + id / liste" et éventuellement, android: layout_alignparenttop = "vrai" , tous deux dans la TextView De votre boîte de dialogue originale_preference_list.xml, non?


Forifique réponse! Merci Muslidrikk.


4 Réponses :


2
votes

Je suppose que c'est une question de thème. Essayez de changer le thème de votre boîte de dialogue à l'intérieur du constructeur, faites-la comme SetStyle (style_no_title, r.style.apptheme) . Votre theme d'application de base avec style no_title.

Si ce n'est pas le problème que ce qui pourrait être lié à la classe listpreference la classe elle-même. Cela pourrait remplacer votre mise en page pour la cohérence de la vue de la vue de la préférence. Cependant, je n'ai pas utilisé listpreference avant, donc c'est juste une supposition.

Pouvez-vous reproduire le même résultat en jouant avec les thèmes de l'aperçu de la disposition graphique XML?


1 commentaires

Merci pour votre suggestion. Cependant, après avoir joué avec les thèmes, il est apparu que ce n'était pas le problème.



4
votes

Je pense que le problème est avec la manière dont les œuvres de lutte contre la liste list. Listpreference utilise Builder.SetSingLechoiceItems () pour créer les lignes avec les radiobuttons, et il offre une préférence sur la mise en page personnalisée que vous essayez d'ajouter (dans votre cas une vue TextView et une liste de réception à l'intérieur d'une linearlayout. La solution extension de la dialogue. ici est un lien vers un github où j'ai créé une boîte de dialogue personnalisée qui fait ce dont vous avez besoin. Je n'ai pas codé le Logique Radiobutton.


2 commentaires

Merci pour vos suggestions. En effet, le problème vient du constructeur.SetsingLechoiceItems (). Je l'ai réparé par l'extension de la vérification de la liste LIST et sur le dépréciation decreaDeateDialogView () de ne pas utiliser le constructeur de dialogue. Je vais mettre le code dans une réponse séparée.


Bon j'ai pu aider. Le lien GitHub vous a-t-il aidé du tout?



1
votes

Une autre option que vous pouvez essayer consiste à ajouter le textview code> en tant qu'aufil sur la liste code> comme ceci:

TextView textView = new TextView(getActivity());
ListView listView = new ListView(getActivity());
listView.addHeaderView(textView);


1 commentaires

Merci, mais Addheaviewiew () ne semble pas fonctionner lorsqu'il est utilisé dans une liste de vue ListPrareference.



0
votes

Le lien ci-dessus est cassé. Sur cette solution, l'idée est de remplacer la vérifie list et gonfler votre propre liste de liste, avec les données définies sur la liste luttant.

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:checkMark="?android:attr/listChoiceIndicatorSingle"
    android:ellipsize="marquee"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:paddingBottom="2dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:paddingTop="2dip"
    android:textAppearance="?android:attr/textAppearanceMedium" />


0 commentaires