Как установить размер кнопки динамически

В настоящее время я разрабатываю дизайн для своего приложения для Android в Android Studio 3. Мне нужна помощь в адаптации размера кнопки. Мне нужен xml или тег, который позволяет изменять размер кнопки в зависимости от процента ширины или высоты экрана.

Попробуйте использовать Constraints Layout, поместите свою кнопку внутри ограничивающего макета, настройте на основе ширины или высоты в процентах, и вы обнаружите, что он работает как адаптивный макет для каждой платформы устройства.

Nanda Z 10.04.2019 09:23
1
1
141
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

двумя способами вы можете достичь:

1.Use constraint layout 
2.use SDP library to set height width value from library

  get sdp library from this link


 https://github.com/intuit/sdp

Main use of this library the values will change corresponding scren size
Ответ принят как подходящий

Вы можете использовать линейные макеты:

<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical">

    <!-- 30% height button -->
    <Button
        android:layout_width = "wrap_content"
        android:layout_height = "0dp"
        android:layout_weight = "0.3" />

</LinearLayout>

Или попробуйте Библиотека процентной поддержки

implementation 'com.android.support:percent:28.0.0'

<android.support.percent.PercentFrameLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical">

    <!-- 30% height button -->
    <Button
        android:layout_width = "wrap_content"
        app:layout_heightPercent = "30%" />

</android.support.percent.PercentFrameLayout>

Ваше первое предложение - это именно то, что мне нужно, но оно должно изменить размер для layout_width, я пытался сделать это так, как android:layout_width = "0dp", но оно продолжает выдавать мне ошибку. Интересно, почему?

Bradley Kurt 10.04.2019 09:50

Установите ориентацию LinearLayout на горизонтальную вместо вертикальной и измените высоту кнопки на wrap_content. Также, как вы уже сделали, измените ширину кнопки на 0dp. Если я помог вам, пожалуйста, поддержите этот ответ, чтобы помочь другим пользователям.

Marcos CG 10.04.2019 09:58

Я также попробовал ваше второе предложение, и оно мне нравится больше. Но у меня только проблема. Кажется, я не могу добавить линейный макет внутри PercentFrameLayout. Что я должен сделать для этого?

Bradley Kurt 11.04.2019 16:35

Другие вопросы по теме