2014-04-03 1 views
0

그래서 3 버튼으로 앱을 만들고 있습니다. 현재 나는 다음과 같은 .xml 파일을 가지고있어 가장자리를 반올림하여 빨간색으로 표시합니다. 이제는 하나를 선택하면 버튼이 녹색으로 변하고 나머지 두 개는 남아 있거나 빨간색으로 돌아갑니다. 어떻게이 일을 할 수 있습니까? 다른 .xml 파일을 만들어야합니까?버튼이 선택되면 버튼의 색상을 변경합니다. 안드로이드 개발

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- green state --> 
    <item 
     android:drawable="@drawable/button_selected" 
     android:state_selected="true"></item> 
    <!-- green state --> 
    <item 
     android:drawable="@drawable/button_pressed" 
     android:state_pressed="true"></item> 
    <!-- red state --> 
    <item 
     android:drawable="@drawable/button_disabled"></item> 

</selector> 

을 그럼 당신은 같은이 셀렉터를 호출한다 :

<Button 
    ... 
    android:background="@drawable/my_selector" /> 

그리고 만들려면 다음과 같이

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" android:padding="10dp"> 
    <!--red colour.--> 
    <solid android:color="#FF0000"/> 
    <corners 
     android:bottomRightRadius="10dp" 
     android:bottomLeftRadius="10dp" 
     android:topLeftRadius="10dp" 
     android:topRightRadius="10dp"/> 
    <stroke android:width="2px" android:color="#000000"/> 
</shape> 
+0

예 다른 솔리드 및 획 색상으로 다른 드로어 블을 작성해야합니다. –

+1

대신 RadioBrop을 3 개의 RadioButton과 함께 사용하면 ** 눌린 상태 **를 유지할 수 있습니다 (버튼 상태는 순간적입니다). 버튼 그래픽을 제거하고 빨간색/녹색 상태를 배경으로 사용하는 사용자 정의 선택기를 사용할 수 있습니다. –

답변

2

selector를 사용 다음은 버튼 내 그릴 수 .XML 파일입니다 각각의 상태에 대해 각 drawable.xml (예 : 빨간 버튼) : button_selected, button_pressedbutton_disabled.

는 또한 같은 onTouchListener를 사용하여 상태를 유지할 수 있습니다 :

button.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       // change the color 
       return true; 
      case MotionEvent.ACTION_UP: 
       // intitial color 
       return true; 
      default: 
       return false; 
     } 
    } 
}); 

그러나, 그것은 Selectorbackground를 사용하는 것이 좋습니다,이 더 적은 리소스를 사용합니다.


UPDATE :

당신은 유지하고 다음을 클릭 버튼의 배경 상태를 변경하기 위해 setBackgroundResource 방법을 사용할 수 있습니다 :

// 1st clicklistener method 
button.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     v.setBackgroundResource(R.drawable.green_drawable); 
     button2.setBackgroundResource(R.drawable.selector_drawable); 
    } 
} 

// 2nd clicklistener method 
button2.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     v.setBackgroundResource(R.drawable.green_drawable); 
     button1.setBackgroundResource(R.drawable.selector_drawable); 
    } 
} 

테스트하지만이 작업을해야하지.

+0

안녕하세요 @ theGuy05, 작동하지 않습니까? 이것은 당신이 찾고 있던 것이 아닙니다. – Fllo

+0

좋아, 정말 고마워! 이제 버튼을 클릭 한 후에 버튼을 녹색으로 유지하는 방법이 될까요? 그런 다음 다른 버튼을 클릭하면 해당 버튼이 녹색으로 바뀝니 까? 라디오 버튼과 비슷하지만 라디오 버튼을 사용하지 않습니다. – theGuy05

+0

@ theGuy05 나는 내 대답을 업데이트했다. 나는 이것을 시험하지 않았지만,이 트릭을해야한다. 작동하는지 알려주세요. HTH – Fllo