Intereting Posts
Как я могу убедиться, что в Android не вызывается неподдерживаемый (более высокий уровень) API? Eclipse не доволен одной доступной папкой? Как найти и собрать всю информацию, доступную для контакта в любом телефоне Android? Изображение MultipartEntity не загружается Программно индексировать файлы hprof памяти разбора Удалить -выполнение суффикса при публикации библиотеки Android Какая версия Android представляет звуковую подсказку SpeechRecognizer onReadyForSpeech? Выполнять вызовы с помощью telnet с одного эмулятора Android на другой? Выровнять текст вокруг вертикали центра ImageSpan Обновление до телефонного разговора 3.3.0 Получение TypeNotPresentException, за которым следует ClassNotFoundException или NoClassDefFoundError для всех версий Android, кроме android L Поэтапное развертывание с несколькими APK Отображение анимационного изображения GIF в android с помощью VideoView Подавлять / Блокировать BroadcastReceiver в другом приложении Android Parcelable Реализация с ArrayList <Object>

Ripples не отображается с помощью selectableItemBackground как планшет на CardView с устройством Android 5.0

Я запускаю это на Nexus 5. Вот часть кода для моего CardView:

CardView cardView = new CardView(getActivity()); cardView.setRadius(4); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 400); lp.setMargins(32, 16, 32, 16); cardView.setLayoutParams(lp); cardView.setContentPadding(50, 50, 50, 50); ... cardView.setForeground(selectedItemDrawable); 

И вот как я получаю selectedItemDrawable:

  int[] attrs = new int[] { R.attr.selectableItemBackground }; TypedArray ta = getActivity().obtainStyledAttributes(attrs); selectedItemDrawable = ta.getDrawable(0); ta.recycle(); 

Когда я нажимаю карту, пульсация, которая должна появиться с выбраннымItemDrawable, не появляется (она выглядит точно так же, как и без набора переднего плана). Я запускаю 5.0, так что это кажется странным, так как appcompat docs только говорят, что он не работает с устройствами pre-Lollipop. Кто-нибудь знает, почему это так? Минимальный уровень API – 16, цель 21.

Оказалось, что я делюсь своим экземпляром Drawable с несколькими картами. Это было решено путем возврата нового экземпляра с использованием метода getSelectedItemDrawable:

  public Drawable getSelectedItemDrawable() { int[] attrs = new int[]{R.attr.selectableItemBackground}; TypedArray ta = getActivity().obtainStyledAttributes(attrs); Drawable selectedItemDrawable = ta.getDrawable(0); ta.recycle(); return selectedItemDrawable; } 

Затем программно установите его в качестве переднего плана:

  cardView.setForeground(getSelectedItemDrawable()); cardView.setClickable(true); 

Теперь я получаю эффект пульсации на 5.0.