Cómo mantener la relación de aspecto fijo para un botón en android
Tengo un conjunto de botones en un diseño horizontal. He fijado una imagen drenable como el fondo para cada uno de estos botones. Pero cuando hago el diseño lineal para abarcar el ancho de la pantalla, los botones pierden su relación de aspecto. Quiero mantener su relación de aspecto como es. Quiero decir que tengo que mantener en forma cuadrada a través de la aplicación lo que nunca la resolución de la pantalla es. Cómo puedo hacer esto. Cualquier sugerencia es apreciada.
Aquí está mi XML
- Path.isConvex no es compatible. Android Studio - Botón de alternar
- Error "Debe proporcionar el atributo de altura"
- ¿Es posible ajustar el adaptador al diseño lineal?
- Barra de acción de Sherlock: findViewById (android.R.id.home) return null en android 2.3
- Estado lista estado desplegable y desactivado
<?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="fill_parent" android:background="@drawable/main_background" android:baselineAligned="false" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/answer_bg" android:padding="10dip" > <Button android:id="@+id/b2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /> <Button android:id="@+id/b3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /> <Button android:id="@+id/b4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /> </LinearLayout> </LinearLayout>
Gracias
- Cómo definir el nombre de la carpeta para varias resoluciones de pantalla (conflicto entre Nexus 10 y Galaxy Tab 10)?
- Cómo mostrar una imagen utilizando el servicio en android
- Establecer mayúsculas para TextView
- Cómo hacer layout_height y layout_width con igual tamaño
- ¿Por qué los botones se extienden para cubrir todo el layout_weight asignado
- Error de la aplicación de Android: Id duplicado 0x7f04000f, etiqueta nula o identificador de origen 0x0 con otro fragmento para com.google.android.gms.maps.SupportMapFragment
- Problema de renderización de advertencia de fidelidad
- Acolchado CardView y esquinas redondeadas
Estoy dando una mejora a su XML. No lo he probado, pero debería funcionar. Los cambios sugeridos son, en lugar de configurar la imagen como fondo, establecerla como src para ImageButtons. Además, si insiste en el botón, puede envolver cada uno de los botones con otro diseño y establecer su propiedad de gravedad en "centro". Echa un vistazo al siguiente XML.
<?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="fill_parent" android:background="@drawable/main_background" android:baselineAligned="false" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/answer_bg" android:padding="10dip" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" > <Button android:id="@+id/b2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /></LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" > <Button android:id="@+id/b3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /></LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" > <Button android:id="@+id/b4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /></LinearLayout> </LinearLayout> </LinearLayout>
Siéntase libre de preguntar si no funciona.
Si desea una forma cuadrada exacta significa que debe ajustar el ancho y la altura para el mismo valor.
Si desea ajustar los 3 botones con la misma forma en la disposición horizontal independientemente de las resoluciones de la pantalla, use layout_weight = 1 . A mi conocimiento sobre las disposiciones, sólo esta es la solución.
Aquí estoy usando el peso para la disposición usted puede intentar como este. Fije el weightsum para la disposición linear y después fije el ancho del botón como 0dp y el peso según su necesidad.
<?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="fill_parent" android:background="@drawable/main_background" android:baselineAligned="false" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/answer_bg" android:padding="10dip" android:weightSum="1" > <Button android:id="@+id/b2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".33" android:background="@drawable/img_background" android:text="@string/x" android:textStyle="bold" /> <Button android:id="@+id/b3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".33" android:background="@drawable/img_background" android:height="50dip" android:text="@string/x" android:textStyle="bold" /> <Button android:id="@+id/b4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".33" android:background="@drawable/img_background" android:text="@string/x" android:textStyle="bold" /> </LinearLayout> </LinearLayout>
- Cross Platform Aplicación: Android + Custom REST Backend (Yii2) + Proveedor SSO de terceros para iniciar sesión (Google+)
- RecyclerView con la imagen de fondo en la parte superior