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

#android

#Android

Вопрос:

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

Комментарии:

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

Ответ №1:

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

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

Комментарии:

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

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

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

Ответ №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