정상적인 경우 빨간색으로 표시되고 누르면 회색으로 표시되는 버튼 선택기입니다.
눌렀을 때 텍스트 크기와 색상도 변경 될 수 있도록 코드를 추가로 직접 수정하려면 어떻게해야합니까? 감사합니다!
<item android:state_pressed="true" >
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="@color/grey"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="#FF6699"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
답변
당신은 설정해야합니다 selector
의 button
레이아웃 파일에.
<Button
android:id="@+id/button1"
android:background="@drawable/selector_xml_name"
android:layout_width="200dp"
android:layout_height="126dp"
android:text="Hello" />
그리고 끝났습니다.
편집하다
다음은 디렉토리의 button_effect.xml
파일입니다.drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/numpad_button_bg_normal"></item>
</selector>
여기에서 3 개의 드로어 블이 있음을 알 수 있습니다 . 위에서 썼 듯이이 button_effect
스타일을 button
. 당신 selector_xml_name
은 button_effect
.
답변
상태 목록 드로어 블로 는 텍스트 크기를 변경할 수 없습니다 . 텍스트 색상 및 텍스트 크기를 변경하려면 다음과 같이하십시오.
텍스트 색상
텍스트 색상을 변경하려면 색상 상태 목록 리소스를 만들 수 있습니다 . res/color/
디렉토리 에있는 별도의 리소스입니다 . 레이아웃 xml에서 android:textColor
속성 값으로 설정해야 합니다. 그러면 색상 선택기에 다음과 같은 내용이 포함됩니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/text_pressed" />
<item android:color="@color/text_normal" />
</selector>
텍스트 크기
리소스만으로는 텍스트의 크기를 변경할 수 없습니다. “dimen selector”가 없습니다. 코드에서해야합니다. 그리고 직접적인 해결책은 없습니다.
아마도 가장 쉬운 해결책은 View.onTouchListener()
그에 따라 up 및 down 이벤트를 활용 하고 처리하는 것입니다. 다음과 같이 사용하십시오.
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// change text size to the "pressed value"
return true;
case MotionEvent.ACTION_UP:
// change text size to the "normal value"
return true;
default:
return false;
}
}
});
다른 해결책은 뷰를 확장하고 setPressed(Boolean)
메서드를 재정의하는 것입니다. 이 메서드는 눌림 상태가 변경 될 때 내부적으로 호출됩니다. 그런 다음 메서드 호출에서 그에 따라 텍스트의 크기를 변경합니다 (수퍼를 호출하는 것을 잊지 마십시오).
답변
드로어 블 폴더에 custom_selector.xml 생성
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/unselected" android:state_pressed="true" />
<item android:drawable="@drawable/selected" />
</selector>
드로어 블 폴더에 selected.xml 모양 만들기
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
<solid android:color="@color/selected"/>
<padding />
<stroke android:color="#000" android:width="1dp"/>
<corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>
드로어 블 폴더에 unselected.xml 모양 만들기
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
<solid android:color="@color/unselected"/>
<padding />
<stroke android:color="#000" android:width="1dp"/>
<corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>
값 폴더의 color.xml에 선택 / 선택되지 않은 상태에 대해 다음 색상을 추가합니다.
<color name="selected">#a8cf45</color>
<color name="unselected">#ff8cae3b</color>
답변
선택기를 구현하는 가장 좋은 방법은 프로그래밍 방식을 사용하는 대신 xml을 사용하는 것입니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/button_bg_normal"></item>
</selector>
자세한 내용은 http://www.blazin.in/2016/03/how-to-use-selectors-for-botton.html 링크를 사용하여 구현했습니다
.
답변
레이아웃 .xml 파일
<Button
android:id="@+id/button1"
android:background="@drawable/btn_selector"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="press" />
btn_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/btn_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/btn_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/btn_bg_normal"></item>
답변
이 코드를 사용할 수 있습니다.
<Button
android:id="@+id/img_sublist_carat"
android:layout_width="70dp"
android:layout_height="68dp"
android:layout_centerVertical="true"
android:layout_marginLeft="625dp"
android:contentDescription=""
android:background="@drawable/img_sublist_carat_selector"
android:visibility="visible" />
(선택기 파일) img_sublist_carat_selector.xml :
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/img_sublist_carat_highlight" />
<item android:state_pressed="true"
android:drawable="@drawable/img_sublist_carat_highlight" />
<item android:drawable="@drawable/img_sublist_carat_normal" />
</selector>