2016-06-14 4 views
0

私は自分のレイアウトにセレクタを追加しました。レイアウトを押すと白い枠線が追加されます。期待どおりに動作しますが、Android 6.0以降でのみ動作します。古いデバイスはハイライト表示されません。私はアンドロイド:hardwareAccelerated = "true"をマニフェストに追加しようとしましたが、違いはありませんでした。セレクタはアンドロイドのみで動作します。6

これは古いアンドロイド版ではうまくいかない理由が分かっていますか?ハイライト表示されます

レイアウト

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:clickable="true" 
android:foreground="@drawable/selector"> 

セレクタ

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
    android:drawable="@drawable/border_white_rounded" /> 

国境

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="@color/transparent" /> 

<stroke 
    android:width="3dp" 
    android:color="@color/color_white" /> 

<corners android:radius="3dp" /> 

+0

私はフォアグラウンドではなく、新規であると信じて、あなたはそれのためにcompatのサポートをチェックする必要がありますか? – Doppie

答えて

0

android:foregroundはAPI 1以降に存在しましたが、it was only moved up to the View class in API 23 (Marshmallow, 6.0)です。

API1からAPI23まで、android:foregroundFrameLayoutでのみ機能しました。ここで

は、Androidの以前のバージョンでフォアグラウンドをサポートするためのいくつかの解決策と同様の質問です:How to set foreground attribute to other non FrameLayout view

+0

明確にし、効果的なソリューションを提供してくれてありがとう! – noev

関連する問題