Android: CheckedTextView kann nicht überprüft werden?

Zuerst wollte ich ein Häkchen, wo der Text links neben dem Häkchen steht. Nach der Suche auf dieser Seite habe ich herausgefunden, die beste Workaround ist android: CheckedTextView? Allerdings habe ich herausgefunden, dass das Häkchen nicht manuell von Benutzern geändert werden kann. Ist es von Design?

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autoupdatecheckboxview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:paddingLeft="6dip" android:paddingRight="6dip" android:text="Pop up a message when new data available" android:typeface="sans" android:textSize="16dip"/> 

  • Wie bekomme ich Schatten auf Android lineare Layout?
  • Android Studio 2.2 Vorschau 1 Rendering Probleme
  • AnimationSet setInterpolator () funktioniert nicht wen mit nineoldandroids lib
  • Was ist mit windowContentOverlay in Android API 18 passiert?
  • Wie man die Internet-Konnektivität innerhalb des Netzwerks in Android (mit Internet von einem anderen Gerät durch HOTSPOT)
  • Zeige Fehler auf der Spitze des Edit Text Android
  • Möglich zu ändern, wo Android Virtual Devices gespeichert sind?
  • RecyclerView java.lang.IndexOutOfBoundsException: Inkonsistenz erkannt. Ungültige Positionsposition bei Wiederaufnahme von hinzugefügtem Fragment
  • Wie überschneide ich die Verschlüsselungsliste, die an den Server von Android gesendet wird, wenn ich HttpsURLConnection verwende?
  • Löschen WebView-Inhalte
  • Holen Sie sich JSONArray ohne Array-Name?
  • Konvertieren von Nullobjekt in String
  • 7 Solutions collect form web for “Android: CheckedTextView kann nicht überprüft werden?”

    Sie möchten wohl nur eine regelmäßige CheckBox (die von Button und damit TextView erbt). CheckedTextView ist entworfen, um mit CheckedTextView zu arbeiten. Beispiel CheckBox Layout XML ist unten:

     <CheckBox xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Pop up a message when new data available" android:textSize="16dip" /> 

    Es ist möglich, und etwas einfach zu implementieren, was Sie suchen. Ja, CheckedTextView wird hauptsächlich verwendet, um eine einzelne Checkable Ansicht in der Zeile eines ListView , die die checkable Zustände ihrer Kinder mit choiceMode . Allerdings, da CheckBox scheint nicht zu einem rechtsbündigen Kontrollkästchen auf eigene Faust zu unterstützen, und CheckedTextView ist eine rechtsbündige Checkbox, ist es sinnvoll, zu wollen, was da ist.

    Da ListView den markierten Status eines Listenelements steuert, reagiert das CheckedTextView selbst nicht auf Klickereignisse und ist standardmäßig nicht klickbar oder fokussierbar. Es reagiert jedoch auf gedrückte und fokussierte Zustände – das heißt, es kann Fokus- und Klickereignisse erhalten und sieht so gut aus, wie ein Checkbox aussehen soll. Das einzige, was fehlt, ist, dass es nicht umgeschaltet seinen überprüft Zustand auf klicken. Daher wird ein schneller OnClickListener, der .toggle() aufruft, Ihnen das Endergebnis geben, das Sie suchen.

    Zusammenfassend braucht man 3 Dinge: anklickbar, fokussierbar und onClickListener:

      CheckedTextView chkBox = (CheckedTextView) findViewById(R.id.CheckedTextView01); chkBox.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { ((CheckedTextView) v).toggle(); } }); 

    Und Layout-Datei:

     <CheckedTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/CheckedTextView01" android:checked="true" android:clickable="true" android:focusable="true" android:text="Label on Left Side of Checkbox." /> 

    Sie können CheckedTextView auf folgende Weise verwenden und umschalten:

    Im Layout:

     <CheckedTextView android:id="@+id/cv_id" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Some text here" android:textSize="18sp" android:gravity="center_vertical" android:clickable="true" android:checkMark="@drawable/btn_check_off" android:focusable="true" android:checked="false" android:onClick="toggle"/> 

    In deiner Tätigkeit:

     public void toggle(View v) { CheckedTextView cView = (CheckedTextView) v.findViewById(R.id.cv_file_name); if (cView.isSelected()) { cView.setSelected(false); cView.setCheckMarkDrawable (R.drawable.btn_check_off); } else { cView.setSelected(true); cView.setCheckMarkDrawable (R.drawable.btn_check_on); } } 

    Und vergessen Sie nicht, Ziehbare zu setzen. Ich bekomme es von SDK … \ android-sdk-windows \ platforms \ android-10 \ data \ res \ drawable-mdpi \

    Dieses Layout sieht und verhält sich genauso wie CheckedTextView :

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?attr/dropdownListPreferredItemHeight" android:gravity="center_vertical" > <TextView android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:ellipsize="marquee" android:singleLine="true" /> <CheckBox android:id="@android:id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="false" android:duplicateParentState="true" android:focusable="false" /> </LinearLayout> 

    Nur extra Beinarbeit ist, einen OnClickListener in der Root-Ansicht zu setzen und checkBox.toggle() auf der CheckBox .

    Einfache Antwort ist Gebrauch: isChecked() Methode anstelle von isSelected() .

     CheckedTextView chkBox = (CheckedTextView) findViewById(R.id.CheckedTextView01); chkBox.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(((CheckedTextView) v).isChecked()){ ((CheckedTextView) v).setChecked(false); }else{ ((CheckedTextView) v).setChecked(true); } } }); 

    Und bekomme den Status mit view.isChecked() Methode.

    Wenn Sie mehr feinkörnige Kontrolle über das Etikett und das Kontrollkästchen wünschen, ist eine andere Alternative, RelativeLayout und das Android: layout_alignParentRight Attribut zu verwenden:

     <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/my_checkbox_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="my checkbox label" /> <CheckBox android:id="@+id/my_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" /> </RelativeLayout> 

    Sie können dann den Rand / etc der Textansicht und Checkbox an Ihre Bedürfnisse anpassen.

    Hier ist meine Verwendung in SingleChoiceDialog

    1.select_dialog_singlechoice.xml

     <?xml version="1.0" encoding="UTF-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="@style/PopupSelectList" android:checkMark="@drawable/radio" android:ellipsize="marquee" android:gravity="center_vertical" android:paddingLeft="12.0dip" android:paddingRight="10.0dip" /> 

    2.style.xml

     <style name="PopupSelectList"> <item name="android:textSize">16.0sp</item> <item name="android:textColor">@color/white</item> <item name="android:background">@drawable/list_item_selector</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:minHeight">@dimen/dialog_select_height</item> </style> 

    3.ratio.xml

     <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/dot_selected" android:state_checked="true" android:state_window_focused="false"/> <item android:drawable="@drawable/dot_normal" android:state_checked="false" android:state_window_focused="false"/> <item android:drawable="@drawable/dot_normal" android:state_checked="false"/> <item android:drawable="@drawable/dot_selected" android:state_checked="true"/> </selector> 

    4.In Adapter's GetView

     CheckedTextView title = (CheckedTextView) convertView .findViewById(android.R.id.text1); title.setText(mItems[position]); title.setSelected(mCheckedItem == position ? true : false); title.setCheckMarkDrawable(position == mCheckedItem ? R.drawable.dot_selected : R.drawable.dot_normal); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.