2013-09-20 3 views
0

Когда вы нажимаете на кнопку в Android, она меняет цвет. Я хочу, чтобы так было. Я имею в виду я хочу что-то вроде этого:Сменить кнопку фона, чтобы щелкнуть

Button btn = (Button) findViewById(R.id.button_id); 
button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      btn.setBackGroundColor(R.drawable.clicked /*clicked style*/); 
     } 
    }); 

пример:

enter image description here

Это является нажав на кнопку. Я хочу, чтобы он остался таким, как только я перестаю нажимать на него. Есть простой способ, как что:

android.R.drawable.btn_default // это стиль кнопки по умолчанию, я хочу прессованные один: D

+0

посмотрите этот блог http://www.mkyong.com/android/android-imagebutton-selector-example/, это поможет вам. – Akshay

+0

, пожалуйста, примите ответ, если он сработает. –

ответ

0

Вы можете попробовать этот способ либо поместить изображение в темноте, когда нажмите или цвет

вытяжке/selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_focused="true" android:drawable="@drawable/buttondark"/> 
    <item android:state_pressed="true" android:drawable="@drawable/buttondark" /> 
    <item android:drawable="@drawable/button" /> 
</selector> 

внутри на создание способа написать

btn.setBackgroundResource(R.drawable.selector); 
+0

Кажется, это хорошее решение. Но в файле selector.xml он дает ошибки: «Ошибка: не найден ресурс, который соответствует указанному имени (в« drawable »со значением« @ drawable/buttondark »)» и «Ошибка: не найден ресурс, соответствующий указанному имени (в ' drawable 'со значением' @ drawable/button '). " – MilesDyson

+0

только потому, что изображение не существует в вашей папке ресурсов, помещайте изображение или цвет вместо buttondark –

1

В вашем коде Java напишите button.setPressed(true);. Он установит кнопку в нажатом режиме. Вы можете изменить параметр на true и false, если вы хотите, чтобы он был нажат и не нажат ...

1

Итак, вы хотите, чтобы он начинался без нажатия, а затем оставался нажатым после нажатия на один? Попробуйте использовать вместо OnTouchListener добавив btn.setPressed(true);:

public boolean onTouch(View v, MotionEvent event) 
     { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) 
      { 
       btn.setPressed(true); 
      } 
      return true; 
     } 
+0

Когда я использую setPressed в каком-то другом методе, тогда кнопки onClick, It работают. Но это не работает, когда я использую его в onClick. Я думаю, что он автоматически меняет setPressed на false, когда заканчивается событие onClick. – MilesDyson

+0

Я отредактирую свой ответ. – npace

0

Посмотрите изображений StateSelector

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

Вы можете установить Diferent ресурсы для Diferent состояния вашей кнопки/зрения. Этот пример установки различных цветов:

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:drawable="@color/branded_content_pressed_color" android:state_enabled="true" android:state_pressed="true"/> 
    <item android:drawable="@color/branded_content_pressed_color" android:state_enabled="true" android:state_focused="true"/> 
    <item android:drawable="@color/branded_content_background_color"/> 
</selector> 

Затем вы можете установить переключатель обычно

button.setBackgroundResource(R.drawable.selector); 
1

Попробуйте использовать селектор:

Определение selector.xml в вытяжке папке

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:drawable="@drawable/button_pressed_yellow" 
       android:state_pressed="true" /> 
     <item android:drawable="@drawable/button_normal_green" /> 
    </selector> 

и установите фон кнопки на android:background="@drawable/selector", затем в коде на клик даже t набора кнопок btn.setpressed(true);

Смежные вопросы