Я искал SO для ответа на свой вопрос и не нашел, пожалуйста, дайте мне знать, если он был дан ответ в другом месте.
У меня было несколько кнопок в моем приложении:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scaninbutton"
android:layout_above="@+id/scanoutbutton"
android:background="@drawable/buttonshape2"
android:layout_marginBottom="10dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"/>
Beeing buttonshape2 выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="30dp"
/>
<solid
android:color="@color/frontcolor"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="100dp"
android:height="40dp"
/>
</shape>
Все работало нормально, но после того, как я перенес свое приложение на Androidx, оно больше не работает. Как настроить рисование в качестве фона для компонентов?
Спасибо.
РЕДАКТИРОВАТЬ:
Кроме того, в некоторых кнопках в моем приложении есть код:
GradientDrawable bgShape = (GradientDrawable)askQuestion.getBackground();
bgShape.setColor(Color.parseColor(almacen.getColor()));
происходит сбой при
java.lang.ClassCastException: android.graphics.drawable.RippleDrawable cannot be cast to android.graphics.drawable.GradientDrawable
... но происходит только при НЕКОТОРЫХ кнопках. На странице входа у меня есть этот код:
GradientDrawable bgShape3 = (GradientDrawable)entrar.getBackground();
bgShape3.setColor(getColor(R.color.frontcolor));
И это работает! Единственное отличие состоит в том, что кнопка askQuestion является локальной переменной, а кнопка ввода является глобальной переменной. Это не имеет никакого смысла.