Intereting Posts
Узнать, включен ли режим энергосбережения – Android SDK Могу ли я создать специальный определитель конфигурации для Android? Черный экран во внутреннем предпочтении. Экран Slide Toggle для Android Поделиться Bitmap () на Android в твиттере, facebook, mail Как настроить пользовательский шрифт для всего приложения на Android? Где я могу получить JAR для импорта libcore.io? Android NumberPicker – Отрицательные числа Как я могу создавать HTML-страницы, которые автоматически корректируют свои изображения на разные размеры экрана для мобильных устройств? Android забирает весь список контактов (имя, адрес электронной почты, телефон) занимает более минуты около 700 контактов Мой BroadcastReceiver не получает намерения BOOT_COMPLETED после моих ботинок N1 Ошибка в файле pom в проекте Maven после импорта в Eclipse Известные проблемы на разных устройствах Android? Применение ненормального поведения не запускает активность, указанную в намерении Как добавить символ маркера в TextView?

Программно изменить ширину кнопки в android

Как изменить ширину кнопки программно. Я могу изменить высоту, но ширина не меняется. Ниже приведен фрагмент кода

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); } 

Но ширина кнопки занимает ширину экрана.

Solutions Collecting From Web of "Программно изменить ширину кнопки в android"

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

Должен иметь работу для вас.

Для этого есть один пример Awesome: проверьте это


Вы должны применить LayoutParams ViewGroup который содержит ваш View . То есть, если ваша кнопка находится внутри RelativeLayout , вы должны использовать RelativeLayout.LayoutParams

Вы можете сделать это таким образом.

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

Но убедитесь, что вы это сделаете, добавив кнопку к родительскому элементу. И LinearLayout.LayoutParams используется, когда parent является LinearLayout и когда родительский RelativeLayout использует RelativeLayout.LayoutParams .

Может это сделать

  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); 

Попробуйте использовать только mMenuContainer.addView(button);

Я решил, используя это:

 //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; 

Надеюсь, эта помощь.

В моем случае я использую AppCompatImageButton (и AppCompat). Оказывается, если я сохраню настроенные изображения с плотностью в различных доступных папках: drawable-ldpi, drawable-mdpi, drawable-hdpi и т. Д., Тогда кнопка не будет масштабироваться. Вместо этого я должен был поместить одну кнопку для каждой кнопки в drawable-nodpi . Убедитесь, что изображение кнопки с рисунком nodpi имеет наибольший размер, который вам нужен. Android не будет масштабировать размер кнопки; Однако он может масштабировать размер вниз. Я создал кнопку в XML следующим образом:

 <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" /> 

Затем, в onCreate, когда вы извлекаете кнопку, вызовите adjustButtonSize (который я ввел в базовый класс):

  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); }