리플 드로어 블에서 state_selected를 설정하는 방법
RippleDrawableandroid:state_selected
내부 를 지정하는 방법
리플 드로어 블에 대해 다음과 같은 xml이 있지만 설정할 때 배경색이 표시되지 않습니다. myView.setSelected(true);
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#DDDDDD"
>
<item android:id="@android:id/mask">
<shape>
<solid
android:color="@color/black" />
</shape>
</item>
<item android:state_selected="true">
<shape>
<solid
android:color="#EEEEEE" />
</shape>
</item>
<item>
<color android:color="#FFFFFF" />
</item>
</ripple>
다른 사람이 같은 문제를 겪을 경우를 대비하여 답을 찾았습니다.
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#DDDDDD"
>
<item>
<selector>
<item android:state_selected="true">
<color android:color="#EEEEEE" />
</item>
<item android:state_activated="true">
<color android:color="#EEEEEE" />
</item>
<item>
<color android:color="#FFFFFF" />
</item>
</selector>
</item>
</ripple>
@Sohaib의 답변에 추가하려면 :
@Alanv는 OP에 마스크가 필요하지 않았다는 것이 옳습니다. 그러나 선택기 상태 중 하나가 투명하고 마스크가 필요한 경우 여기에 표시됩니다.
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripple_color">
<!-- mask here... -->
<item android:id="@android:id/mask">
<color android:color="@color/black"/> <!-- any color will do -->
</item>
<item>
<selector>
<!-- ... NOT here. -->
<item android:state_selected="true">
<color android:color="@color/blue"/>
</item>
<item android:state_activated="true">
<color android:color="@color/red"/>
</item>
<item>
<color android:color="@color/transparent"/>
</item>
</selector>
</item>
</ripple>
처음에는 선택기와 : boom 내부에 마스크가있었습니다.
위의 답변을 다른 답변과 결합 :
Ripple, colorPrimary 또는 colorAccent의 색상은 무엇입니까? (소재 디자인)
항목이 선택된 상태에있을 때에도 작동하는 멋진 잔물결 효과를 제공합니다.
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<!-- Ripple mask - applied to all selector states -->
<item android:id="@android:id/mask">
<color android:color="#42ffffff" />
</item>
<!-- Selected state of item -->
<item>
<selector>
<item android:state_selected="true">
<color android:color="?attr/colorAccent" />
</item>
</selector>
</item>
</ripple>
이것은 drawable-v21 폴더에 있으며 다른 플랫폼의 경우 강조 색상을 사용하는 선택기를 만들 수 있습니다.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/accent" android:state_selected="true"/>
<item android:drawable="@color/accent" android:state_pressed="true"/>
</selector>
I wanted to mimic the behavior of the Material Design checkboxes but I couldn't get them right until I used a ColorStateList like this:
In drawable-v21/bg_checkbox_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/checked_accent_statelist"
android:radius="24dp">
</ripple>
In color/checked_accent_statelist.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?colorControlHighlight" android:state_checked="false"/>
<item android:color="?android:textColorHighlight" android:state_checked="true"/>
</selector>
The attribute "?android:textColorHighlight" is your accent color but with the right transparency for using it in ripples (I think it is 26%).
Also, you should provide a fallback for pre API 21 devices in drawable/bg_checkbox_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_shortAnimTime">
<item>
<shape android:innerRadius="24dp" android:shape="oval">
<solid android:color="@color/checked_accent_statelist"/>
</shape>
</item>
</selector>
ReferenceURL : https://stackoverflow.com/questions/27496916/how-to-set-state-selected-in-ripple-drawable
'IT TIP' 카테고리의 다른 글
배열, 고정 크기 배열 및 배열의 기본 주소를 함수 매개 변수로 전달하는 것의 차이점 (0) | 2021.01.06 |
---|---|
Java의 입력 텍스트에서 구두점을 제거하려면 어떻게해야합니까? (0) | 2021.01.06 |
EF6 Code First의 enum에 해당하는 테이블을 만드는 방법은 무엇입니까? (0) | 2021.01.06 |
텍스트 상자에서 커서의 위치를 어떻게 찾습니까? (0) | 2021.01.06 |
Java에서 지정된 날짜 동안 일광 절약 시간 (DST)이 활성 상태인지 확인 (0) | 2021.01.06 |