Android - Llenar diseño con botones
-
19-09-2019 - |
Pregunta
Sólo una pregunta rápida acerca de cómo se haría para la implementación de este. Yo quiero que haya botones en la parte inferior de la pantalla, pero si el tamaño de la pantalla es más grande, se añadiría más botones.
Por ejemplo, en un tamaño de pantalla pequeña, puede haber 4-5 botones en la parte inferior, pero si se ejecutó en una tablilla o algo similar, no habría tal vez 20 botones.
¿Alguna sugerencia? No puede desplazarse ya sea, sólo tiene que rellenar dinámicamente el diseño con botones.
Gracias.
Solución
Para poner botones en la parte inferior de un diseño, hacer algo como esto a su diseño:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout">
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/button_layout"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:gravity="center">
<Button
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"></Button>
<Button
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"></Button>
<Button
android:id="@+id/Button03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"></Button>
</LinearLayout>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/button_layout"
android:id="@+id/content">
<ListView
android:id="@+id/ListView01"
android:layout_height="fill_parent"
android:layout_width="fill_parent"></ListView>
</FrameLayout>
</RelativeLayout>
Para cambiar el número de botones se muestran en base al tamaño de la pantalla, se debe implementar diseños separados para múltiples tamaños de pantalla ..
http://developer.android.com/guide/practices/screens_support.html
Otros consejos
Parece que desea crear su propia clase de diseño personalizado. Eso o simplemente llenar un LinearLayout (por ejemplo) hasta que se le acaba el espacio en la pantalla.
Si conoce el tamaño de sus botones en píxeles se puede utilizar DisplayMetrics para obtener las dimensiones de la pantalla a continuación, calcular cuántos botones se ajuste en su espacio asignado.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.heightPixels GIVS altura absoluta en píxeles metrics.ydpi da pixeles físicas exactas por pulgada de la pantalla
y metrics.density da densidad lógica para propósitos de escala
ver aquí: http://developer.android.com/reference/ androide / util / DisplayMetrics.html
a continuación, sólo hacer algo como
do{
Button button=new Button(context);
button.setText("yada yada")
button.allYoursettings....
.
.
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LinearLayout layout=(LinearLayout) findViewById(R.id.yourlayout);
layout.addView(button,p);
} while(havespaceleft);