Intereting Posts
ActionBarSherlock AndroidManifest.xml и другие файлы отсутствуют при импорте Как ускорить загрузку Android-браузера? Ошибка: метод add (int, Fragment, String) в типе FragmentTransaction не применим для аргументов (int, FragementTest, String) Функциональность Spinner не работает на Android 6.0.1 Как получить идентификатор пользователя Google (а не идентификатор устройства)? Показать файл PDF в Android WebView с помощью mozilla pdf.js Уровень API Android ниже 19 A «До и после» Сравнение слайдов изображений в Andorid Android ViewGroup.setScaleX () вызывает обрезание представления Как получить изображение профиля в facebook пользователя в facebook SDK Android Кнопка «Назад» не работает после отображения контакта Как поймать ошибку «Растровое изображение слишком велико для загрузки в текстуру» XML-парсер для динамической компоновки (динамически загруженные скины) Получение ошибки сборки при обновлении до градиента 3.3 и инструментов сборки Android 2.3.0 Android Виджет onReceive не может вызвать класс обслуживания? Что хорошего setAudioEncodingBitRate для записи голоса

Программно изменить ширину кнопки в 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); }