J'essaie d'utiliser R.layout.simple_list_item_multiple_choice avec ListView. CheckedTextView est utilisé dans simple_list_item_multiple_choice.xml, mais comment faire pour que la case à cocher soit alignée à gauche et non alignée à droite?Comment faire pour que la case à cocher dans Android CheckedTextView soit aligné à la place de aligné à droite?
Répondre
Je ne pense pas que vous le pouvez. En regardant le source code, il semble que la coche est dessinée sur la droite tout le temps. Et, pour être honnête, je vous recommande de rester avec cela, par souci de cohérence - Android est frappé tout le temps parce que ses applications ont des IU incohérentes.
Au hasard que quelqu'un pointe une arme sur votre tête, vous forçant à changer la mise en place de la coche, la sous-classe CheckedTextView
comme OMGPleaseDontShootCheckedTextView
, et remplacer les méthodes comme onDraw()
, avec les versions tordu de l'original qui change la mise en place de l'image et le texte.
Créez votre propre modèle de ligne et définissez android: drawableLeft sur CheckedTextView.
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:gravity="center_vertical"
android:paddingLeft="5dip"
android:drawableLeft="?android:attr/listChoiceIndicatorMultiple"
/>
ou
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
Cela vous empêche d'utiliser la fonctionnalité de dessin composé avec l'indicateur de coche (que CheckedTextView permet par défaut). Je pense que la réponse de @CommonsWare est plus appropriée. –
android: drawableLeft = "android: attr/listChoiceIndicatorMultiple": P
Le secret est dans Android: Checkmark rendent null
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/checked_text_single_choice"
android:layout_width="match_parent"
android:layout_height="52dp"
android:checkMark="@null"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceSmall"
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
android:drawableRight="@null"
android:textColor="@android:color/black"
/>
Je ne peux pas croire que cela a fonctionné. merci – j2emanue
solution de travail – vuhung3990
quelle magie est-ce? ce n'est même pas logique, mais ça marche! – Ogbe
essayez celui-ci et espérez qu'il vous donnera quelques idées
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connection lost sound alert"
android:layout_weight="10"
android:layout_gravity="center"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_gravity="right"
android:orientation="horizontal" >
<CheckBox android:id="@+id/checkbox_meat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:onClick="onCheckboxClicked"/>
</LinearLayout>
</LinearLayout>
Si vous souhaitez que la case à cocher soit sur la gauche, utilisez simplement CheckBox
. Peut-être que ce n'est pas grave, mais un CheckBox
peut contenir du texte. Vous pouvez définir ce texte en ajoutant un attribut XML android:text ou en appelant la méthode setText(). En fait CheckBox
est hérité de Button
, qui hérite de TextView
, c'est pourquoi il a toutes les propriétés liées au texte.
ajouté exemple 'CheckBox' xml avec capture d'écran dans une réponse séparée –
Un exemple de suggestion de @ WonderCsabo pour utiliser CheckBox.
<CheckBox
android:id="@+id/create_account_checkedTextView_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show"
android:gravity="center"
android:checked="true"
# relative layout params
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_above="@+id/hint1" />
Il peut y avoir un truc avec Vérifiable mise en page comme dans ce post - https://chris.banes.me/2013/03/22/checkable-views/ . Il suffit d'utiliser une mise en page personnalisée comme celui-ci comme la mise en page de l'article ListView:
<com.example.custom_view.CheckableLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckedTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:duplicateParentState="true"
.../>
<TextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
.../>
</com.example.custom_view.CheckableLinearLayout>
ou
android:checkMark=?android:attr/listChoiceIndicatorMultiple"
Vous pouvez assigner votre étirables à l'attribut drawableLeft, mais vous ne ferez pas bon parce qu'il ne supporte teinter . Au lieu de cela, j'étendu CheckedTextView comme ça:
public class LeftSideCheckedTextView extends CheckedTextView {
public LeftSideCheckedTextView(Context context) {
this(context, null, 0);
}
public LeftSideCheckedTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LeftSideCheckedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
Field mCheckMarkGravity = null;
try {
mCheckMarkGravity = this.getClass().getSuperclass().getDeclaredField("mCheckMarkGravity");
mCheckMarkGravity.setAccessible(true);
mCheckMarkGravity.set(this, Gravity.START);
} catch (Exception e) {
Logger.error(e);
}
}
}
Ici, j'accéder au mCheckMarkGravity champ caché qui est utilisé à l'intérieur CheckedTextView mais ont pas accès via des attributs de style, selon ce billet bug: https://code.google.com/p/android/issues/detail?id=174517
- 1. C# Comment faire pour que le texte d'une colonne ListView soit aligné à droite au lieu de aligné à gauche?
- 2. NSButton aligné vers la droite
- 3. Android CheckBox avec le bouton Vérification aligné à droite/boîte
- 4. Mon TextView n'apparaît pas aligné à droite
- 5. sélectionnez Options de l'étiquette aligné à droite
- 6. Menu déroulant CSS/jQuery aligné à droite
- 7. Aligné à droite dans une cellule de table avec CSS
- 8. Aligné à droite une formule de chaîne dans Crystal Reports
- 9. ie7 css avec div aligné à droite dans TD
- 10. Disposition du contrôle StackPanel aligné à droite dans Silverlight
- 11. position absolue difficile aligné à droite avec une marge gauche
- 12. Éléments de grille WPF et texte aligné à droite
- 13. Activez la case à cocher de la case à cocher pour décocher à l'aide de jquery
- 14. Latex Lettre: de l'adresse aligné à gauche
- 15. Comment créer un formulaire Django qui affiche un libellé de case à cocher à droite de la case à cocher?
- 16. Problème d'état de la case à cocher dans ListView
- 17. Eclipse RCP: champ de recherche aligné à droite dans la barre d'outils
- 18. Comment désactiver la case à cocher de la case à cocher dans DataGridView - Windows Forms?
- 19. Comment mettre en page la vue aligné à droite et en bas d'un LinearLayout
- 20. Modifier l'action de la case à cocher pour obtenir à la place du message
- 21. l'image aligné à gauche dans la navigation iPhone barre
- 22. Comment puis-je avoir une image flottante (aligné à droite) avec du texte qui entoure l'image dans la disposition Android?
- 23. Case à cocher d'image de case à cocher dans UITableViewCell
- 24. case à cocher case à cocher
- 25. En-tête xsl-fo - image à gauche, trois lignes de texte à droite, aligné en haut
- 26. Modifier le contrôle ComboBox Popup pour être aligné à droite avec son parent
- 27. Croix-navigateur CSS pour aligner à gauche, aligné à droite ET aligner centre sur la même ligne
- 28. case à cocher case à cocher pour la présélection sur la néigation (pagination)
- 29. Comment mettre un lien aligné à droite dans les onglets jQuery?
- 30. Android ListView Sélection de la case à cocher
Merci Ceci est utile ! –
Maintenant, avec les coches de conception de matériel doivent être sur la gauche, mais le code pour permettre cela est malheureusement privé, donc ne peut pas être facilement rétroporté. –