Как установить фоновое изображение для кнопки, НО ВСЕ ЕЩЕ РАБОТАЕТ, КАК НОРМАЛЬНАЯ КНОПКА (с эффектами)? - PullRequest
0 голосов
/ 14 апреля 2019

Я пытался добиться нормальных эффектов кнопки Android , когда кнопка уже установлена ​​с фоновым изображением

Но проблема в том, что после установки фона природа кнопки по умолчанию исчезает (тени, анимация и т.д.)

Может кто-нибудь дать мне рабочие решения для этого?

Вот код моей кнопки

<Button style="@style/Widget.AppCompat.Button.Colored"
        android:id="@+id/student"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/student"
        android:layout_marginRight="8dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginLeft="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginBottom="8dp"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="8dp"
        app:layout_constraintVertical_bias="0.891" />

Это выглядит потрясающе, так как я установил фоновое изображение, но По-прежнему похоже, что вы установили изображение на jLabel в Java)

Как получить внешний вид кнопки по умолчанию при сохранении моего фонового изображения без изменений?

Ответы [ 3 ]

0 голосов
/ 14 апреля 2019

Почему вы не используете ImageButton виджет? Он имеет то же поведение, что и Button и ImageView в сочетании

Проверьте это руководство , чтобы узнать, как с ним работать.

как указано в официальной документации

Отображение кнопки с изображением (вместо текста), которая может быть нажата или нажата пользователем. По умолчанию ImageButton выглядит как обычная кнопка со стандартным фоном кнопки, который меняет цвет при разных состояниях кнопки. Изображение на поверхности кнопки определяется либо атрибутом android: src в элементе XML, либо методом ImageView.setImageResource (int)

0 голосов
/ 14 апреля 2019

Случай 1, эффекты показывают за изображением:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="?selectableItemBackground"
    android:src="@mipmap/desire_image" />

или овальные эффекты, но они все еще показывают за изображением

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="?selectableItemBackgroundBorderless"
    android:src="@mipmap/desire_image" />

Случай 2, используя вид карты, оберните изображение и вид плашхолдера и установите щелчок на виде плахолдера. Эффекты покажут перед изображением:

<androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        app:cardCornerRadius="4dp"
        android:layout_height="wrap_content">

       <!-- Expect image view, image button, button-->
        <ImageView 
           android:layout_width="desire_size"
           android:layout_height="desire_size"
           android:src="@mipmap/desire_image" />

        <View
          android:id="@+id/clickable_view"
          android:layout_width="desire_size"
          android:layout_height="desire_size"
          android:background="?selectableItemBackground"/>

</androidx.cardview.widget.CardView>

примечание: зарегистрируйте событие onClick, чтобы показать эффекты

0 голосов
/ 14 апреля 2019

Кнопка работает, устанавливая фон на фон с высотой, тенями, рябью и т. Д. Чтобы получить то же поведение, вам нужно будет установить свой фон в StateListDrawable, который выполняет эффект ряби и помещает тении эффекты возвышения с вашим изображением как фон внутри всего этого.Вы не можете просто установить фон в качестве вашего изображения, которое потеряет все эти функции.Самый простой способ получить это право - взглянуть на исходный код AOSP и найти используемый чертеж, скопировать его в свой проект и соответствующим образом отредактировать.

По сути, в Android кнопка представляет собой просто TextView со специальнымпредустановка фона.

...