Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cambiar programaticamente el ancho del botón en android

Cómo cambiar el ancho de un botón mediante programación. Puedo cambiar la altura pero el ancho no cambia. El siguiente es mi fragmento de código

private void createButton(final String label) { Button button = new Button(this); button.setText(label); button.setWidth(10); button.setHeight(100); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); mMenuContainer.addView(button, mMenuItemLayoutParamters); } 

Pero el ancho del botón ocupa el ancho de la pantalla.

6 Solutions collect form web for “Cambiar programaticamente el ancho del botón en android”

button.setLayoutParams(new LinearLayout.LayoutParams(10, 100));

Debe tener trabajo para usted.

Hay un ejemplo impresionante en línea para esto: compruebe esto


Debe aplicar LayoutParams de ViewGroup que contiene su View . Es decir, si su botón está dentro de RelativeLayout , debe utilizar RelativeLayout.LayoutParams

Usted puede hacerlo de esta manera.

 LinearLayout.LayoutParams params = button.getLayoutParams(); params.width = 100; button.setLayoutParams(params); 

Pero asegúrese de hacer esto, después de agregar su botón a un padre. Y LinearLayout.LayoutParams se utiliza cuando parent es LinearLayout y cuando parent es RelativeLayout use RelativeLayout.LayoutParams .

Puede hacer esto

  int width= (int)getResources().getDimension(R.dimen.button_width); int heigth= (int)getResources().getDimension(R.dimen.button_heigth); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, heigth); button.setLayoutParams(layoutParams); 

Intente usar sólo mMenuContainer.addView(button);

Resolví usando esto:

 //ImageButton creation final ImageButton server_icon_button=new ImageButton(getApplicationContext()); //setting background image in drawable server_icon_button.setBackgroundResource(R.drawable.bonsai); //After adding ImageButton to the parent i done this server_icon_button.getLayoutParams().height=180; server_icon_button.getLayoutParams().width=100; 

Espero que esta ayuda.

En mi caso estoy usando AppCompatImageButton (y AppCompat). Resulta que si mantengo las imágenes ajustadas en densidad en las varias carpetas dibujables: drawable-ldpi, dibujable-mdpi, drawable-hdpi, etc. entonces el botón no escalará. En cambio tuve que poner un solo dibujable para cada botón en drawable-nodpi . Asegúrese de que la imagen del botón nodpi es de tamaño más grande que necesita. Android no escalará el tamaño del botón; Sin embargo, puede escalar el tamaño hacia abajo. He creado un botón en XML como este:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:meter="http://schemas.android.com/apk/res-auto" android:layout_width="wrap_content" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatImageButton android:id="@+id/button" style="@style/ButtonStyle" android:baselineAlignBottom="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="0dp" android:minWidth="0dp" app:srcCompat="@drawable/button_selector" android:background="?attr/selectableItemBackgroundBorderless" android:contentDescription="@string/button" android:focusable="true"> </RelativeLayout> <!-- styles.xml --> <style name="ButtonStyle" parent="MyAppTheme"> <item name="android:scaleType">centerInside</item> <item name="android:adjustViewBounds">true</item> <item name="colorControlHighlight">@color/buttonColorPressed</item> <item name="colorButtonNormal">@color/buttonColor</item> </style> <!-- v21/styles.xml --> <style name="TargetButton" parent="MyAppTheme"> <item name="android:scaleType">centerInside</item> <item name="android:adjustViewBounds">true</item> <item name="colorControlHighlight">@color/buttonColorPressed</item> <item name="colorButtonNormal">@color/buttonColor</item> <item name="android:elevation">@dimen/button_elevation</item> </style> <!-- drawable/button_selector.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/button"/> </selector> <!-- drawable/button.xml --> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_button" android:gravity="center" /> <!-- drawable/button_pressed.xml --> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/ic_button_pressed" android:gravity="center" /> 

A continuación, en onCreate cuando recuperes el botón, llama a adjustButtonSize (que pongo en mi clase base):

  mButton = (AppCompatImageButton) findViewById(R.id.button); adjustButtonSize(mButton); public void adjustButtonSize(AppCompatImageButton button) { DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int width = displayMetrics.widthPixels; int height = displayMetrics.heightPixels; ViewGroup.LayoutParams params = button.getLayoutParams(); params.height = height / 10; // 10% params.width = ((width * 20) / 100); // 20% button.setLayoutParams(params); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.