2013-02-26 2 views
3

Я только начинаю разработку Android. У меня есть очень простая кнопка, созданный, как это:Android. Кнопка не выглядит нажатой.

<Button 
    android:id="@+id/howItWorksButton" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="58dp" 
    android:text="@string/how_it_works_button_title" /> 

В коде я установить цвет фона для него:

howItWorksButton.setBackgroundColor(Color.RED); 

это onClickListener:

howItWorksButton.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View view) 
     { 
      Intent intent = new Intent(MainMenuActivity.this, HowItWorksActivity.class); 
      MainMenuActivity.this.startActivity(intent); 
     } 
    }); 

Проблема заключается в том, когда я нажимаю это не выглядит так, как будто его просто прессуют, он просто остается, как есть, никаких изменений. Его метод onClick работает нормально, все в порядке с функциональностью, но я хочу, чтобы он каким-то образом изменился, как и все кнопки, когда они нажаты.

+0

Это не будет выглядеть ** нажимается ** до и если вы не добавить ** OnClickListener () ** в вашей деятельности для этой кнопки. – Numair

+0

@Numair я сделал это уже –

+0

@TanjaV вы можете привести пример –

ответ

5

Android не отображает нажатое состояние автоматически, в отличие от iOS, если вы установили его цвет вручную. Вот рекомендуемый способ сделать это.

Вставьте папку colors.xml в папку значений. Его содержимое должно быть таким.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="white">#ffffffff</color> 
    <color name="darkwhite">#ffeeeeee</color> 
    <color name="transparent">#00ffffff</color> 
    <color name="semitransparent">#88000000</color> 
    <color name="orange">#ffff8800</color> 
    <color name="light_orange">#ffe27d18</color> 
    <color name="light_blue">#ff00a2e8</color> 
    <color name="black">#ff000000</color> 
    <color name="menuButtonColor">#ffea8e44</color> 
</resources> 

Поместите файл селектор в вашем Drawable, например

my_button_selector.xml

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

Используйте свой селектор как этот

<Button 
    android:id="@+id/howItWorksButton" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="58dp" 
    android:text="how_it_works_button_title" 
    android:background="@drawable/my_button_selector" /> 
+0

Brilliant! Большое спасибо! –

+0

Простой, короткий и работает. благодаря – lalitm

0

Вам необходимо установить селектор изображения в качестве фона, чтобы сказать андроид, какое изображение или цвета вы хотите, чтобы быть видимыми, когда кнопка нажата, сфокусированные, инвалиды, ... Здесь вы можете найти пример http://www.mkyong.com/android/android-imagebutton-selector-example/

+0

Неправильная настройка только цвета. Он будет использоваться для каждого состояния (по умолчанию, нажата, сфокусирована и т. Д.). Так что на самом деле ничего не изменится, что вы делаете с помощью кнопки – zubke

2

Попробуйте это,

Используйте Selector.

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

<item android:drawable="@drawable/login_btn" android:state_pressed="false"/> 
<item android:drawable="@drawable/login_btn_focus" android:state_pressed="true"/> 

</selector> 
0

Написать android:state_pressed=" " в обоих pressed и других state ,

При нажатии кнопки

<item android:state_pressed="true"> 
    <shape> 
     <solid android:color="@color/green" /> 
     <corners android:radius="@dimen/btn_corner_rds" /> 
    </shape> 
</item> 

когда кнопка не нажата

<item android:state_pressed="false"> 
    <shape> 
     <solid android:color="@android:color/transparent" /> 
     <stroke android:width="@dimen/stroke_width_btn" /> 
     <corners android:radius="@dimen/btn_corner_rds" /> 
    </shape> 
</item> 
Смежные вопросы