2013-05-13 3 views
0

나는 프레젠드 버튼 디자인을 생성하고 즉시로드하려고합니다.android에서 리소스를 즉시 생성합니다.

정적 버전 그것은 XML 경우 :/입술/그리기 폴더에있는

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- selected state --> 
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="true" android:state_selected="false"/> 
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="false" android:state_selected="true"/> 
    <item android:drawable="@drawable/bt_back_pressed" android:state_pressed="true" android:state_selected="true"/> 
    <!-- unselected state (default) --> 
    <item android:drawable="@drawable/bt_back_normal"/> 

</selector> 

. 난 그냥 코드의 라인을 사용하고자 할 때 : 지금

android:background="@drawable/bt_back" 

을 현재 프로젝트가 서버 측에서 버튼의 디자인을로드, 그것은 www.somehost.com에서로드 bt_back_normal.png하자 /some/resource/bt_back_normal.png.

"눌린"버전 (좀 더 어둡음)을 생성하고 필요한 경우 이벤트 체인에 링크하는 API를 얻을 수 있다면 좋을 것입니다.

지금은 사용자가 버튼을 누르면 시각적 효과가 없습니다.

어떻게하면 해당 XML을 어떻게 생성 할 수 있습니까? - 눌려진 버전을 생성하고 필요할 때 표시하도록 설정하십시오.

감사합니다.

답변

1

나는 StateListDrawable 클래스를 찾고 있다고 생각합니다. 코드에서 상태를 추가하고 (예 : 다운로드 한 누른 png 파일) 버튼에 button.setBackgroundDrawable(stateList)으로 상태를 추가 할 수 있습니다.

+0

+1, 아마도. 오늘 다른 프로젝트에서 테스트 및 aceept, 작동하지 않을 필요가 probanly이 클래스의 이름을 어떻게 들었 : –

+0

테스트의 소리 : 그것은 작동하지만, "button_general"배경을 가진 2x 버튼을 가지고 있다면, 그리고 나는 생성 된 버전을 StateListDrawable에 저장하고 모든 버튼을 설정합니다. button1을 누르는 것보다 buttoned에 표시된 결과가 표시됩니다. 이는 buttonX에서 동일한 결과를 보여줍니다. StateListDrawable. StateListDrawable 복제 할 수 없습니다 ... –

+1

불행히도 각 버튼마다 새 StateListDrawable을 만들어야합니다. 나는이 문제에 스스로 직면했다. –

1

아니요, 바로 수행 할 수 없습니다. 동적으로 생성 된 누른 드로어 블을 사용하려면 OnTouchListener를 구현하고 내부에 필요한 배경을 설정해야합니다.

+0

+1 표준 방법이 아니라는 것을 알고 있지만, 추한 경우에도 해킹 방법이 있더라도 –

1

이것은 임시 해결 방법이지만 버튼의 OnClickListener를 재정의하고 거기에있는 버튼의 배경을 변경할 수 있습니다. 즉.

final Button button = (Button)findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View v) { 
      button.setBackgroundDrawable(R.drawable.button_pressed); 
     } 
    }); 

편집 :

난 당신이 상태 변경을 원 몰랐어요; 당신이 방금 눌렀다는 것을 보여주고 싶다고 생각했습니다. 이 경우 StateListDrawable을 사용하십시오 : http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html

+0

"R.drawable.button_pressed"정적 인 경우 –

+0

코드가 일정한 배경을 설정합니다. 딸깍 하는 소리. 상태에 따라 선택하지 않습니다 (눌렀다 놓음). –

+0

"해당 XML을 어떻게 즉시 생성 할 수 있습니까?" 내가 정적 방법을 제시했다, 내가 설명한대로, 동적으로로드 된 리소스와 파리, 런타임에서 그의 동등 물을 생성하고 싶습니다 –

관련 문제