2015-05-03 6 views
-1

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

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin"> 

    <Button 
     android:id="@+id/world" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="10dp" 
     android:padding="10dp" 
     android:background="@color/green" 
     android:textColor="@color/white" 
     android:text="@string/world" 
     android:textAllCaps="false" 
     style="@android:style/TextAppearance.Medium"/> 
</LinearLayout> 

Java

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.action_other_lines) { 
     final Dialog dialog = new Dialog(this); 
     dialog.setContentView(R.layout.dialog_hello_world); 
     dialog.setTitle("Dialog"); 

     Button world = (Button) dialog.findViewById(R.id.world); 
     world.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

Почему вы хотите назначить 'TextAppearance.Medium' в' style' атрибута? Возможно, вы должны использовать 'android: textAppearance =" @ android: style/TextAppearance.Medium "вместо этого. – Karuma

+0

Если вы измените внешний вид кнопки, вы должны сами справиться с этим. – ChiefTwoPencils

+0

@Chief Two Pencils Как это сделать? – MacaronLover

ответ

1

Вы переопределяете эффект onClick по умолчанию, помещая цвет фона.

android:background="@color/green" 

Вы можете сделать это, создав пользовательский фоновый файл xml на drawable, например.

custom_background.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="@color/Pressed_Color" /> 
<item android:state_activated="false" android:drawable="@color/green"/> 
</selector> 

затем вы называете его на кнопку стилизации, как например:

android:background="@drawable/custom_background" 
0

когда вы изменить свой внешний вид по умолчанию, вы должны обрабатывать другое состояние, если вы хотите, как это

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_sel" android:state_selected="true" /> 
    <item android:drawable="@drawable/button_sel" android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_unsel" /> 
</selector> 

сохранить этоткак xml drawable и добавить как android:background