Неправильное соотношение сторон ImageButton - PullRequest
0 голосов
/ 23 декабря 2018

Я экспериментирую с размещением ImageButton и TextView рядом друг с другом в LinearLayout , с достаточно большой кнопкой вертикально, чтобы поместиться в макет - надеюсь, это должно соответствовать ширине.Остальная часть макета должна быть занята текстовым представлением.

На данный момент у меня есть следующий макет в моем XML-файле:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".08"
    android:background="#004D79"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/helpButton"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:cropToPadding="false"
        android:layout_margin="3dp"
        android:adjustViewBounds="true"
        android:background="@drawable/help" /> 

      <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#000000"
        android:text="Some placeholder text"
        android:textColor="#ffffff"
        />

  </LinearLayout>

Этот макет занимает 8%вертикального пространства.Изображение для кнопки 500х500.Однако я столкнулся с некоторыми проблемами!Когда я запускаю макет выше «как есть», кнопка image * - это правильная высота, но она занимает всю ширину макета;текстовое представление отсутствует вообще - похоже, android:adjustViewBounds="true" не работает.Однако, если я заменю android:background="@drawable/help" на android:src="@drawable/help", я получу небольшую квадратную область с левой стороны макета, но на ней нет изображения.Текстовое представление находится справа от «кнопки», но не охватывает остальную часть макета;он обернут, так что он достаточно большой, чтобы охватить текст заполнителя.

Будет ли мне необходимо программно изменить размер кнопки и представления текста в моем приложении, например, OnMapReady (...) ?

Редактировать: я только что проверил, что файл изображения находится в res / drawable / help.png - но почему он должен отображаться с фоном (неправильный размер), а не с src (правильного размера) для меня загадка.

1 Ответ

0 голосов
/ 23 декабря 2018

android:adjustViewBounds необходимо использовать с android:src, когда android:adjustViewBounds истинно, ImageButton отрегулирует свои границы, чтобы сохранить соотношение сторон для рисования, Размер может стать больше.

android:src, android:width, android:height Определяет размер вида, android:background будет растягиваться, чтобы заполнить весь вид, android:scaleType контролирует, как изображение должно быть изменено или перемещено в соответствии с размером этого ImageButton

В макете вы можете установить атрибуты android:src и android:scaleType

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="horizontal"
    android:gravity="center_vertical">

    <ImageButton
        android:id="@+id/helpButton"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_margin="3dp"
        android:scaleType="fitCenter"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</LinearLayout>

...