Quiero mostrar tres botones en el medio de una pantalla, y hacer que los tres botones tengan el mismo ancho, aunque tendrán etiquetas de texto de diferentes longitudes.¿Cómo se crean botones con anchos iguales?
Simplemente agregando tres botones con etiquetas de texto de diferentes longitudes produce botones de diferentes anchuras.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center">
<Button
android:id="@+id/button_1"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="ABCDEF" />
<Button
android:id="@+id/button_2"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="GHI" />
<Button
android:id="@+id/button_3"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="JKLM" />
</LinearLayout>
predeterminado ancho de botón envuelve contenidos:
-
Ajuste del layout_weight a 1 y el layout_width a 0dip en todos los botones hace que se extienden igualmente a llenar toda la pantalla anchura. Por lo que quiero, tales botones son simplemente demasiado grandes, especialmente en pantallas grandes.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center">
<Button
android:id="@+id/button_1"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="ABCDEF" />
<Button
android:id="@+id/button_2"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="GHI" />
<Button
android:id="@+id/button_3"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="JKLM" />
</LinearLayout>
peso disposición 1 botones llenan ancho de la pantalla:
-
Establecimiento de valores diferentes para weightSum en el LinearLayout matriz se puede utilizar para detener los botones de llenar toda la pantalla, pero no creo que este sea el camino que quiero tomar, porque no quiero que los botones ocupen una gran parte de la pantalla en dispositivos de pantalla grande. Para aclarar, usando weightSum, podría, por ejemplo, configurar los tres botones para ocupar colectivamente la mitad del ancho de la pantalla, que puede verse bien en pantallas pequeñas, pero en una pantalla grande, los botones aún ocuparían la mitad del ancho de la pantalla, y el botones simplemente sería mucho más grande de lo que quiero. Quizás la solución final sea simplemente tener diferentes archivos de diseño para diferentes pantallas, pero prefiero no seguir este camino.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center"
android:weightSum="5">
<Button
android:id="@+id/button_1"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="ABCDEF" />
<Button
android:id="@+id/button_2"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="GHI" />
<Button
android:id="@+id/button_3"
android:layout_height="fill_parent"
android:layout_width="0dip"
android:layout_weight="1"
android:text="JKLM" />
</LinearLayout>
suma de peso del 5 pequeña pantalla:
peso suma 5 en pantalla grande:
-
También probé muchas cosas con TableLayout, pero didn' No hay nada mejor que usar LinearLayout.
GridView es extremadamente torpe de usar, y aún no lo he probado.
Entonces, ¿cómo se crean botones con anchos iguales, preferiblemente donde son tan anchos como sea necesario para ajustar el contenido del botón con la etiqueta más larga?
Cualquier consejo es apreciado.
(lo hice buscar y encontrar a esta pregunta hecha y contestada muchas veces, pero ninguna de las respuestas que encontré resolví lo que estoy tratando de lograr.)
cómo escribir un diseño personalizado? – bigstones