Android 팁-Selector 사용법
7458 단어 안 드 로 이 드-실 용 기술
Android UI 를 만 들 때 Selector 는 없어 서 는 안 됩 니 다.selector 를 사용 하 는 작은 기술 중 하 나 를 말씀 드 리 겠 습 니 다.어제 한 친구 가 저 에 게 물 었 습 니 다.제 가 분명히 이 TextView 에 background 를 설 치 했 는데 왜 효과 가 없 는 지 보 세 요.먼저 그 가 어떻게 썼 는 지 보 자.
<TextView
android:background="@drawable/tv_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
//tv_background
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_normal">item>
<item android:drawable="@drawable/shape_press"
android:state_pressed="true">item>
selector>
코드 는 간단 합 니 다.정상 상태 에서 shape 를 표시 하 는 것 입 니 다.normal 스타일,TextView 클릭 시 shape 사용press 스타일,언뜻 보기 에는 아무런 문제 가 없 는 것 같은 데 왜 효력 이 발생 하지 않 습 니까?여기 서 말 해 야 할 것 은 selector 의 일치 규칙 입 니 다.
일치 하 는 규칙 이 view 의 특정한 속성 에 selector 를 설정 할 때 selector 의 일치 하 는 규칙 은 위 에서 아래로 일치 합 니 다.현재 상태 에 맞 는 첫 번 째 item 에 일치 하면 돌아 갑 니 다.
그래서 앞의 문제 의 원인 이 뚜렷 합 니 다.코드 가 실 행 될 때 TextView 가 press 상태 에 있 더 라 도 정상 적 인 상태 에 속 하기 때문에 첫 번 째 에 일치 하 는 데 성 공 했 습 니 다.물론 아래 의 shape 와 일치 하지 않 습 니 다.press 스타일 입 니 다.따라서 press 상태 가 필요 하 다 면 item 순 서 를 바 꾸 면 됩 니 다.
//tv_background
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_press"
android:state_pressed="true">item>
<item android:drawable="@drawable/shape_normal">item>
selector>
따라서 모든 안 드 로 이 드 프로그래머 친구 들 에 게 selector 를 사용 할 때 기본 아 이 템 을 마지막 에 두 는 것 을 권장 합 니 다.그러면 이런 문제 가 발생 하지 않 습 니 다.
selector 에 shape 직접 포함
많은 어린이 들 이 배경 원 각 단 추 를 쓸 때 누 르 고 놓 을 때 상태 가 있 습 니 다.selector xml 와 두 개의 shape drawable xml 파일 을 써 야 합 니 다.사실은 selector 에 shape 를 직접 포함 할 수 있 습 니 다.다음 과 같 습 니 다.
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<item android:state_selected="true">
<shape android:shape="rectangle">
<corners android:topRightRadius="10dp">corners>
<solid android:color="@color/black_transparent_70">solid>
shape>
item>
<item>
<shape android:shape="rectangle">
<corners android:topRightRadius="10dp">corners>
<solid android:color="@color/black_transparent_60">solid>
shape>
item>
selector>
그림 투명도 설정
때때로 제품 은 초점 을 얻 거나 눌 렀 을 때 그림 의 투명 도 를 설정 해 야 합 니 다.이것 은 Selector 에 bitmap 라벨 을 추가 하면 실 현 됩 니 다.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<bitmap android:src="@drawable/ic_category_none" android:alpha="0.5">bitmap>
item>
<item android:drawable="@drawable/ic_category_none">item>
selector>