#java #android #textview
#java #Android #textview
Вопрос:
Я пытаюсь установить фон TextView, который действует как кнопка для вектора XML.
if (condition) {
textViewButton.setBackgroundResource(R.drawable.button_selected);
} else if (condition) {
textViewButton.setBackgroundResource(R.drawable.button_correct);
} else {
textViewButton.setBackgroundResource(R.drawable.button_unselected);
}
Я думаю, что это было введено в API24, и я не могу загрузить его на свой тестовый телефон API22, так как получаю следующую ошибку:
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070069
at android.content.res.Resources.getValue(Resources.java:1324)
at android.content.res.Resources.getDrawable(Resources.java:828)
at android.content.Context.getDrawable(Context.java:408)
at android.view.View.setBackgroundResource(View.java:16251)
at androidx.appcompat.widget.AppCompatTextView.setBackgroundResource(AppCompatTextView.java:113)<
Есть ли какой-нибудь способ внести эти изменения в дизайн ImageView программно для старых API?(отлично работает с API 29 и 30)
Ответ №1:
Это рекомендуемый способ
textViewButton.setBackground(ContextCompat.getDrawable(context,R.drawable.button_selected));
Если это не работает в вашем приложении build.gradle
, вам необходимо включить:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
И добавьте следующее к onCreate
:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
Комментарии:
1. Спасибо! В конце концов ваше решение сработало, сначала я все еще получал ту же ошибку, но затем я заметил, что Android Studio поместила мой «button_unselected» для рисования в папку v24, а другие кнопки для рисования в папку xxhdpi, после перемещения файла это сработало в конце.