Intereting Posts
В Android, как я могу избежать использования метода onStart из-за устаревания? Белый цвет переднего плана TabWidget? Android: Как мне ссылаться на стиль, который находится в библиотеке, которую ссылается на мое приложение? Навигационный ящик в реакторе Как создать экран заставки / Запуск экрана, который исчезает после загрузки приложения? (Реагировать родной) Рыночный фильтр для класса памяти Есть ли какой-либо тип словаря данных в android? Должен ли я импортировать android.graphics.camera или android.hardware.camera? Экран мерцает и требует дополнительного нажатия кнопки после возврата из PreferenceActivity Как отображать подсказку в android? Как отправлять данные JSON ARRAY на сервер в Android Как сохранить клиента android на сервере даже при изменении активности и отправить данные на сервер? Textarea в браузерах Android, скрытых клавиатурой Не удалось загрузить Android-эмулятор в Eclipse. Все, что он говорит, это ANDROID_. Какие-либо предложения? «Отбор не может быть запущен, и нет новых запусков», когда Eclipse для Android Project Dev

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.