Come faccio a fare la casella di controllo in Android CheckedTextView rimanere allineati invece di allineare correttamente?

Sto cercando di utilizzare R.layout.simple_list_item_multiple_choice con ListView. CheckedTextView è utilizzato in simple_list_item_multiple_choice.xml, ma come posso fare la casella di controllo a sinistra allineata anziché a destra allineata?

  • Auto Per scorrere fino a HorizontalScrollView
  • Come crittografare il database sqlite android?
  • LocationClient non rilascia il richiamo quando la spia dello schermo si spegne ma il mio WakefulThread funziona correttamente come previsto
  • Android Independent Volume Control
  • Implementazione della triangolazione in android
  • Aggiorna una pagina in ionic2
  • 9 Solutions collect form web for “Come faccio a fare la casella di controllo in Android CheckedTextView rimanere allineati invece di allineare correttamente?”

    Crea il tuo model di row e imposta l'android: drawableLeft sul 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" /> 

    o

     android:drawableLeft="?android:attr/listChoiceIndicatorSingle" 

    Il segreto è in android: checkMark rende nulla

     <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" /> 

    Non credo che tu possa. Guardando il codice sorgente , sembra che il segno di spunta sia disegnato a destra tutto il tempo. E, per essere onesti, vi consiglio di attenersi a questo, per la coerenza – Android viene bussato tutto il tempo perché le sue applicazioni presentano UI incoerenti.

    Nella probabilità che qualcuno sta puntando una pistola in testa, ti obbliga a modificare il posizionamento del CheckedTextView spunta, la sottoclass CheckedTextView come OMGPleaseDontShootCheckedTextView e sovrascrivere methods come onDraw() , con versioni tweaked dell'originale che modifica il posizionamento dell'image e text.

    Se si desidera che la casella di controllo sia a sinistra, basta utilizzare un CheckBox . Forse non import naturalmente, ma un CheckBox può contenere text. È ansible definire tale text aggiungendo un attributo XML android: text o chiamando il metodo setText () . In realtà CheckBox è ereditato da Button , che eredita da TextView , ecco perché ha tutte le properties; correlate al text.

    Un esempio di suggerimento di @ WonderCsabo per utilizzare 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" /> 

    checkbox_example

    Può essere un trucco con Layout Checkable come in questo post – https://chris.banes.me/2013/03/22/checkable-views/ . Utilizza solo un layout personalizzato come questo come layout di elementi 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> 

    o

     android:checkMark=?android:attr/listChoiceIndicatorMultiple" 

    È ansible assegnare il tuo drawable all'attributo drawableLeft, ma non ti farà alcun bene perché non support la tintura. Invece ho esteso CheckedTextView come quello:

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

    Qui accedo il field nascosto mCheckMarkGravity che viene utilizzato all'interno di CheckedTextView ma non ha accesso tramite attributi di stile, in base a questo biglietto di bug: https://code.google.com/p/android/issues/detail?id=174517

    provare questo e spero che vi darà alcune idee

      <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> 

    android: drawableLeft = "? android: attr / listChoiceIndicatorMultiple": P

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.