Как установить программный эффект Ripple на LinearLayout?
Я хочу установить фон android.R.attr.selectableItemBackground
на LinearLayout
. При использовании XML проблем нет (работает)
<LinearLayout
android:id="@+id/llMiner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/selectableItemBackground"
android:clickable="true" >
... но я должен сделать это в java-коде, поэтому я пробовал это
llMiner.setClickable(true);
llMiner.setBackgroundResource(android.R.attr.selectableItemBackground);
... и он не работает, infact Я получаю NotFoundException
на этой второй строке.
Поэтому после того, как я попробовал этот вариант, подумал, что ресурс - это цвет.
llMiner.setClickable(true);
llMiner.setBackgroundColor(android.R.attr.selectableItemBackground);
В этом случае не запускается исключение, но... не работает (при нажатии меняются фон, но изменение состояния происходит нажатием, как это должно быть)... любое предложение?
Ответы
Ответ 1
Вы можете использовать этот способ.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// If we're running on Honeycomb or newer, then we can use the Theme's
// selectableItemBackground to ensure that the View has a pressed state
TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
textView.setBackgroundResource(outValue.resourceId);
}