11

これを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();

カードをタップすると、selectedItemDrawable に付属するはずのリップルが表示されません (フォアグラウンド セットがない場合とまったく同じように見えます)。私は 5.0 を実行しているので、これは奇妙に思えます。appcompat のドキュメントでは、Lollipop 以前のデバイスでは動作しないとしか書かれていません。なぜこれが事実なのか誰か知っていますか?最小 API レベルは 16 で、ターゲットは 21 です。

4

1 に答える 1