두 가지 상태 i) 일반 ii) 터치 (또는 클릭) 이미지 버튼을 원합니다.
imagebutton 배경 에 일반 이미지를 설정 했고 onclick 메서드 에서 이미지 (눌림) 를 변경 하려고하는데 변경 되지 않습니다.
나는 이미지 버튼을 누르면 다른 버튼을 누를 때까지 이미지가 정상에서 눌림으로 변경되어야하지만 발생하지 않기를 바랍니다 .
누구든지 선택기 또는 런타임에 어떻게 이것을 할 수 있는지 제안 할 수 있습니까 ?
다음은 내 imagebuttonpanel 코드입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="bottom"
android:id="@+id/buttonpanel">
<ImageButton android:id="@+id/buttonhome"
android:layout_width="80dp"
android:layout_height="36dp"
android:focusable="true"
android:background="@drawable/homeselector">
</ImageButton>
<ImageButton android:id="@+id/buttonsearch"
android:layout_height="36dp"
android:layout_width="80dp"
android:background="@drawable/searchselector"
android:focusable="true">
</ImageButton>>
<ImageButton android:id="@+id/buttonreg"
android:layout_height="36dp"
android:layout_width="80dp"
android:background="@drawable/registerselector"
android:focusable="true">
</ImageButton>>
<ImageButton android:id="@+id/buttonlogin"
android:layout_height="36dp"
android:layout_width="80dp"
android:background="@drawable/loginselector"
android:focusable="true">
</ImageButton>
</LinearLayout>
내 선택기 xml은
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--<item android:state_pressed="true" android:drawable="@drawable/homehover"
/> <item android:state_focused="true" android:drawable="@drawable/homehover"
/> <item android:drawable="@drawable/home" /> <item android:state_window_focused="true"
android:drawable="@drawable/homehover" /> -->
<item android:state_enabled="false" android:drawable="@drawable/homehover" />
<item android:state_pressed="true" android:state_enabled="true"
android:drawable="@drawable/homehover" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/homehover" />
<item android:state_enabled="true" android:drawable="@drawable/home" />
</selector>
그리고 ontouch 및 onclick 이벤트에서 이미지 리소스를 변경하려고 시도했지만 도움이되지 않습니다.
답변
다음과 같이 드로어 블에 xml 파일을 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/btn_sendemail_disable" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/btn_send_email_click" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/btn_sendemail_roll" />
<item
android:state_enabled="true"
android:drawable="@drawable/btn_sendemail" />
</selector>
그에 따라 이미지를 설정 한 다음이 xml을 imageButton
.
답변
이 시도
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
btn.setBackgroundResource(R.drawable.icon);
}
});
답변
mhh. 도움이 된 또 다른 솔루션이 있습니다.
- 항목을 클릭하지 않았거나
- 또는 클릭하면 강조 표시됩니다.
내 .xml에서 다음과 같이 ImageButton을 정의합니다.
<ImageButton
android:id="@+id/imageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/selector" />
해당 선택기 파일은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ico_100_checked" android:state_selected="true"/>
<item android:drawable="@drawable/ico_100_unchecked"/>
</selector>
그리고 내 onCreate에서 다음을 호출합니다.
final ImageButton ib = (ImageButton) value.findViewById(R.id.imageButton);
OnClickListener ocl =new OnClickListener() {
@Override
public void onClick(View button) {
if (button.isSelected()){
button.setSelected(false);
} else {
ib.setSelected(false);
//put all the other buttons you might want to disable here...
button.setSelected(true);
}
}
};
ib.setOnClickListener(ocl);
//add ocl to all the other buttons
끝난. 도움이 되었기를 바랍니다. 알아내는 데 시간이 좀 걸렸습니다.
답변
안녕하세요, 다음 코드를 사용하면 유용합니다.
((ImageView)findViewById(R.id.ImageViewButton)).setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN)
((ImageView) v.findViewById(R.id.ImageViewButton)).setImageResource(R.drawable.image_over);
if(event.getAction() == MotionEvent.ACTION_UP)
((ImageView) v.findViewById(R.id.ImageViewButton)).setImageResource(R.drawable.image_normal);
return false;
}
});
답변
문제는 선택기 파일이 아니라고 생각합니다.
당신은 추가해야
<imagebutton ..
android:clickable="true"
/>
이미지 버튼에.
기본적으로 onClick은 목록 항목 수준에서 처리됩니다. (상위) . 그리고 imageButtons는 onClick을받지 않습니다.
위의 속성을 추가하면 이미지 버튼이 이벤트를 수신하고 선택기가 사용됩니다.
확인란에 대해 동일하게 설명하는 이 POST 를 확인하십시오 .
답변
눌린 이미지 버튼을 원하면 이미지가 정상에서 눌려 짐으로 변경되어야합니다.
그러나 가장 좋은 방법은 RadioButton을 사용자 정의하고 그룹에서 사용하는 것입니다. 나는 그 예를 보았다.
그 링크를 기억하지 못해서 죄송합니다.
하지만 그것을 피하고 싶다면. 이것을 selector.xml에 추가해야합니다.
일단 완료. 코드를 확인하고 이것을 추가하십시오.
public void onClick ( View v ) {
myImageButton.setSelected ( true ) ;
}
결과를 볼 수 있습니다. 하지만 최근에 어떤 버튼을 눌렀는지 상태를 관리해야합니다. 설정할 수 있도록
myOLDImageButton.setSelected ( false ) ;
모든 버튼 참조를 배열에 넣는 것이 좋습니다.
답변
당신이하려는 것은 이미지 버튼 목록보다 더 세분화 된 버튼입니다.
여기 http://blog.bookworm.at/2010/10/segmented-controls-in-android.html 은 그렇게하는 방법에 대한 예입니다. 기본 아이디어는 RadioButton이 필요한 확인 상태를 가질 것이기 때문에 ImageButton 대신 RadioButton을 사용자 정의하는 것입니다.