Я установил изображение в качестве кнопки backgroud, но кнопка не имеет подсветки при нажатии на нее. Есть ли способ решить эту проблему.Как сделать кнопку подсветкой?
ответ
Чтобы получить доступ к правильному ресурсу, приведена документация StateList Drawable. Вы просто создаете и определяете его в своем подкаталоге res/drawable
и устанавливаете его в качестве фона кнопок.
Отличный ответ! Что ты здесь делаешь в прошлом? ;-) –
См here
А также here для ответа Ромена Гай:
В Рез/рисуемых, создайте файл с именем, например, mybutton_background.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="false"
android:drawable="@drawable/button_background_focus" />
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/button_background_pressed" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/button_background_pressed" />
<item android:drawable="@drawable/button_background_normal" />
</selector>
Затем установите это значение как t он на фоне вашей кнопки с android:background="@drawable/mybutton_background"
я могу» я добираюсь до этого веб-сайта, потому что я в Китае .... спасибо. – Nick
Вы можете использовать прокси-сервер, чтобы туда добраться. Во всяком случае, обновил свой ответ с помощью решения (написанного Роменом Гаем) –
если вы используете
<Button
------------------
android:background="@drawable/youimage"
>
Тогда как лучше объявить новый новый XML. с изображением вы можете указать изображение для каждого event state. а Октавиан говорит
, и вы можете вы можете установить этот XML, как вы фон
если ваш XML является «Рез/рисуем/abc.xml» затем установить фон, как
android:background="@drawable/abc"
Вы также можете использовать ImageButton
<ImageButton
----------------------
android:src="@drawable/youimage"
/>
Пособие для ImageButton заключается в том, что нет необходимости в другом изображении для подсветки.
Использование View.setFocusableInTouchMode или андроид: focusableInTouchMode. В этом случае используйте эту часть для своей кнопки, либо в формате XML, либо в самом коде. Для получения дополнительной информации см : HTTP: //developer.android.com/reference/android/view/View.html
Я - Китай, здесь есть GFW, поэтому я не могу получить http://developer.android.com/ спасибо в любом случае – Nick
Я сделал это путем переназначения кнопок класса
public class MButton extends Button {
public MButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MButton(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MButton(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
//define style
public void setPressedBg(Integer[] mImageIds) {
StateListDrawable bg = new StateListDrawable();
Drawable normal = this.getResources().getDrawable(mImageIds[0]);
Drawable selected = this.getResources().getDrawable(mImageIds[1]);
Drawable pressed = this.getResources().getDrawable(mImageIds[2]);
bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
bg.addState(View.ENABLED_FOCUSED_STATE_SET, selected);
bg.addState(View.ENABLED_STATE_SET, normal);
bg.addState(View.FOCUSED_STATE_SET, selected);
bg.addState(View.EMPTY_STATE_SET, normal);
this.setBackgroundDrawable(bg);
}
//define style
public void setPressedBg(Integer p1,Integer p2,Integer p3) {
StateListDrawable bg = new StateListDrawable();
Drawable normal = this.getResources().getDrawable(p1);
Drawable selected = this.getResources().getDrawable(p2);
Drawable pressed = this.getResources().getDrawable(p3);
bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
bg.addState(View.ENABLED_FOCUSED_STATE_SET, selected);
bg.addState(View.ENABLED_STATE_SET, normal);
bg.addState(View.FOCUSED_STATE_SET, selected);
bg.addState(View.EMPTY_STATE_SET, normal);
this.setBackgroundDrawable(bg);
}
}
в моем main()
toneButton.setPressedBg(R.drawable.button_tone_protrait_pipa,
R.drawable.button_tone_protrait_pipa1,
R.drawable.button_tone_protrait_pipa1);
Попробуйте сделать это, чтобы получить изящный эффект бедного человека без необходимости создания нескольких копий ваших изображений. Установите значение альфа 0,8 до требуемого значения:
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ImageButton;
public class EAImageButton extends ImageButton {
public EAImageButton(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public EAImageButton(Context context, AttributeSet attrs){
super(context,attrs);
}
public EAImageButton(Context context, AttributeSet attrs, int defStyle){
super(context,attrs,defStyle);
}
public void setImageResource (int resId){
super.setImageResource(resId);
}
@Override
public boolean onTouchEvent(MotionEvent e){
if(e.getAction() == MotionEvent.ACTION_DOWN){
this.setAlpha((int)(0.8 * 255));
}else if(e.getAction() == MotionEvent.ACTION_UP){
this.setAlpha((int)(1.0 * 255));
}
return super.onTouchEvent(e);
}
}
+100 Чистый и умный. –
Если это ImageButton и вы не хотите использовать несколько вытяжки для каждого нажатия/непрессованного состояния можно использовать цветной фильтр изображений атрибута объявления. Это решение аналогично тому, которое используется Омаром.
Создайте OnTouchListener, изменив цветной фильтр при касании.
public class ButtonHighlighterOnTouchListener implements OnTouchListener {
final ImageButton imageButton;
public ButtonHighlighterOnTouchListener(final ImageButton imageButton) {
super();
this.imageButton = imageButton;
}
public boolean onTouch(final View view, final MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
//grey color filter, you can change the color as you like
imageButton.setColorFilter(Color.argb(155, 185, 185, 185));
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
imageButton.setColorFilter(Color.argb(0, 185, 185, 185));
}
return false;
}
}
Назначьте этот слушателю кнопке:
myButton = (ImageButton) findViewById(R.id.myButton);
myButton.setOnTouchListener(new ButtonHighlighterOnTouchListener(myButton));
Update
улучшенный класс применять фломастер для ImageView, ImageButton или TextView через его соединение Drawable.
public class ButtonHighlighterOnTouchListener implements OnTouchListener {
private static final int TRANSPARENT_GREY = Color.argb(0, 185, 185, 185);
private static final int FILTERED_GREY = Color.argb(155, 185, 185, 185);
ImageView imageView;
TextView textView;
public ButtonHighlighterOnTouchListener(final ImageView imageView) {
super();
this.imageView = imageView;
}
public ButtonHighlighterOnTouchListener(final TextView textView) {
super();
this.textView = textView;
}
public boolean onTouch(final View view, final MotionEvent motionEvent) {
if (imageView != null) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
imageView.setColorFilter(FILTERED_GREY);
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
imageView.setColorFilter(TRANSPARENT_GREY); // or null
}
} else {
for (final Drawable compoundDrawable : textView.getCompoundDrawables()) {
if (compoundDrawable != null) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
// we use PorterDuff.Mode. SRC_ATOP as our filter color is already transparent
// we should have use PorterDuff.Mode.LIGHTEN with a non transparent color
compoundDrawable.setColorFilter(FILTERED_GREY, PorterDuff.Mode.SRC_ATOP);
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
compoundDrawable.setColorFilter(TRANSPARENT_GREY, PorterDuff.Mode.SRC_ATOP); // or null
}
}
}
}
return false;
}
}
Только одна коррекция: вам нужно возвратить true в onTouch(), чтобы сказать, что вы сделали какое-то действие в касательном действии. –
это то, что я искал .. imageView.setColorFilter() отлично работает –
- 1. Как сделать кнопку оставаться подсветкой после щелчка по экрану?
- 2. Как сделать кнопку отзывчивой?
- 3. Как сделать кнопку сохранения
- 4. Как лучше сделать кнопку?
- 5. Как сделать кнопку удаления?
- 6. Как сделать квадратную кнопку?
- 7. Как сделать квадратную кнопку
- 8. Сделать изображение как кнопку
- 9. Как сделать кнопку отключить
- 10. Как сделать кнопку нажатой?
- 11. Как сделать кнопку непрозрачной?
- 12. Как сделать кнопку, iOS
- 13. Как сделать кнопку невидимой?
- 14. Как сделать кнопку API
- 15. Как сделать кнопку группы?
- 16. Как сделать кнопку unclickable
- 17. Как сделать кнопку динамически?
- 18. Как сделать кнопку маленькой
- 19. Как сделать полосатую кнопку
- 20. Как сделать кнопку меньше?
- 21. Как сделать кнопку AirPlay?
- 22. Как сделать прозрачную кнопку?
- 23. Как сделать данные с подсветкой рассеиваемыми по щелчку мыши
- 24. Сделать кнопку в M13PDFKit как кнопку возврата
- 25. Сделать кнопку?
- 26. UITextView с подсветкой синтаксиса
- 27. Как сделать кнопку сделать несколько вещей?
- 28. Как управлять подсветкой командой терминала
- 29. Как сделать кнопку BuyNow SagePay?
- 30. Как сделать кнопку Pinterest pinit
см это [ссылка] (http://stackoverflow.com/questions/4125774/android-button-set-onclick-background-image-change-with-xml/4125877#4125877) – David