So entfernen Sie unerwünschte Räume rechts von CheckBox?

Ich arbeite an einer benutzerdefinierten Listenansicht. Ich möchte eine CheckBox in der benutzerdefinierten Ansicht zeigen. Es gibt keinen Text für die CheckBox . Ich fand, dass es immer etwas Leerzeichen auf der rechten Seite der CheckBox .

Hier ist meine Layout-XML-Datei:

  • Warum ist ContextThemeWrapper nun auf die Gruppe Support Library beschränkt?
  • Smack wirft "NoClassDefFoundError: Fehlerhafte Auflösung von: Lorg / jxmpp / util / XmppStringUtils"
  • ImeOptions "actionNext" programmgesteuert - wie man zum nächsten Feld springt?
  • Ist onStop () immer vorangegangen (Pause)
  • Die Methode setDefaultPushCallback vom Typ PushService wird mit Android veraltet
  • Sollte ich OAuth-Konsumentengeheimnis durch Android-App gespeicherte?
  •  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="#fa9654" android:paddingTop="65dp" android:paddingBottom="65dp"> <TextView android:id="@+id/bus_route_list_item_num" android:layout_height="wrap_content" android:layout_width="0dip" android:gravity="center" android:layout_gravity="center_vertical|center_horizontal" android:layout_weight="0.15"></TextView> <TextView android:id="@+id/bus_route_list_item_station" android:layout_height="wrap_content" android:layout_width="0dip" android:gravity="left" android:layout_gravity="center_vertical|center_horizontal" android:layout_weight=".5"></TextView> <TextView android:id="@+id/bus_route_list_item_fee" android:layout_height="wrap_content" android:layout_width="0dip" android:gravity="center" android:layout_gravity="center_vertical|center_horizontal" android:layout_weight=".15"></TextView> <CheckBox android:id="@+id/bus_route_list_item_reminder" android:layout_height="wrap_content" android:layout_width="0dip" android:layout_weight=".20" android:gravity="center" android:layout_gravity="center" android:paddingRight="0dp" android:paddingLeft="0dp" android:paddingTop="0dp" android:paddingBottom="0dp" android:background="#0066ff" android:text="" /> </LinearLayout> 

    Das Ergebnis sieht aus wie:
    Http://pwong.name/checkbox_problem2.jpg

    Wie Sie sehen können, gibt es etwas Platz an der rechten Seite des Kontrollkästchens. Was ich will, ist die Checkbox in der Mitte des blauen Bereichs.

    Ist es möglich, den unerwünschten Platz zu entfernen? Vielen Dank

  • Google Developer Console: Wie sehen Sie alle Bewertungen in der Rezension Liste?
  • Wie kann ich die NullPointerException in v4.DrawerLayout beheben?
  • Unterschied zwischen getDefaultSharedPreferences und getSharedPreferences
  • Bild hochladen mit okHttp
  • Was bedeutet Ellipse bedeuten in Android?
  • Gibt es eine OCR Open Source Library oder Sdk (kostenlos) für Android & iOS?
  • 4 Solutions collect form web for “So entfernen Sie unerwünschte Räume rechts von CheckBox?”

    Sie können CheckBox in LinearLayout einpacken und dann android:gravity="center" auf diesem Layout.

      <LinearLayout android:layout_height="wrap_content" android:layout_width="0dip" android:layout_weight=".20" android:background="#ff0000" android:gravity="center"> <CheckBox android:id="@+id/bus_route_list_item_reminder" android:layout_height="wrap_content" android:layout_width="wrap_content" /> </LinearLayout> 

    Als weitere Alternative kannst du RelativeLayout . Dies würde Ihnen das Layout erheblich vereinfachen und Sie können das Layout- layout_weight loswerden.

    Um einen zusätzlichen Platz rechts vom Bild zu entfernen (wenn kein Text vorhanden ist), erweitern Sie die CheckBox-Klasse und überschreiben die Methode getSuggestedMinimumWidth () , um dort die Bildbreite zurückzugeben. Komplettlösung:

     import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; import android.widget.CheckBox; public class CheckBoxWithoutText extends CheckBox { private Drawable buttonDrawable; public CheckBoxWithoutText(Context context) { super(context); } public CheckBoxWithoutText(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected int getSuggestedMinimumWidth() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { return getCompoundPaddingLeft() + getCompoundPaddingRight(); } else { return buttonDrawable == null ? 0 : buttonDrawable.getIntrinsicWidth(); } } @Override public void setButtonDrawable(Drawable d) { buttonDrawable = d; super.setButtonDrawable(d); } } 

    Keiner der bisherigen Lösungen hat für mich gearbeitet, aber ich habe versucht, eine Übersetzung an den Inhalt anzupassen, und es hat ziemlich gut geklappt, keine Notwendigkeit in einer zusätzlichen Layout-Hierarchie, noch die Umsetzung eigener Ansichten:

      <CheckBox ... android:text="@null" android:translationX="12dp" /> 

    Auch hält es die Grenzen des Elements an der richtigen Stelle, so Berührungsbereich ist nicht verschoben.

    Ich würde hier ein relatives Layout verwenden. Ausrichten des Kontrollkästchens auf Elternteil …

    Grüße, Stéphane

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.