2014-12-07 8 views
0

버튼 대신 사용하는 사용자 정의 드로어 블이 있습니다. 예를 들어 camButton은 기본 카메라를 열어 사용자가 사진을 찍을 수 있도록합니다.입력을 기준으로 프로그래밍 방식으로 드로어 블 상태를 설정하는 중

camButton에는 자원이 제공되어 드로어 블이 흰색 또는 녹색이 될 수 있습니다. 이것은 camButton이 어떻게 동작해야하는지입니다.

1) 기본값 인 no-input 상태는 흰색입니다.

2) 입력 상태가 녹색입니다. 사용자가 사진을 찍었지만 삭제하지 않은 경우 드로어 블은 녹색으로 표시됩니다.

3) 버튼이 흰색 일 때 버튼을 누르면 버튼을 놓을 때까지 녹색으로 바뀌어야합니다.

4) 녹색 일 때 버튼을 누르면 아무런 효과가 없습니다.

다음은 이와 비슷한 것을 테스트하기 위해 selector입니다. 그러나이 선택기는 버튼을 눌렀을 때 버튼의 색상 만 변경합니다. 위의 # 1 및 # 3은 처리하지만 # 2 또는 # 4는 처리하지 않습니다.

cam_selector.xml

:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- green --> <item android:drawable="@drawable/cam_pressed" android:state_pressed="true"/> 
    <!-- green --> <item android:drawable="@drawable/cam_pressed" android:state_long_pressable="true"/> 
    <!-- white --> <item android:drawable="@drawable/cam_normal"/> 
</selector> 

이 셀렉터가 내 주요 레이아웃으로 구현되는 방법입니다

<Button 
    android:id="@+id/camButton" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:background="@drawable/cam_selector"/> 

내 응용 프로그램에서 나는 논리 값을 사용하여 제공 입력이 있는지 테스트합니다.

질문 : 코드 (또는 다른 방법)의 불리언 값을 기준으로 camButton의 상태를 @drawable/cam_pressed으로 설정하려면 어떻게해야합니까?

불명확하거나 추가 정보가 필요한 경우 알려주십시오. 모든 조언을 부탁드립니다. 감사!

답변

2
Button button = (Button) findViewById(R.id.camButton);  
if(camPressed){ 
    button.setBackground(getResources().getDrawable(R.drawable.cam_pressed)) 
} else{ 
    //other stuff 
}