Кнопка в диалоге не работает как кнопка при нажатии
После создания и тестирования моего пользовательского диалогового окна я заметил, что моя кнопка не отображает никаких визуальных признаков изменений (таких как эффект ряби или выделения) при нажатии. Кто-нибудь знает, что я делаю не так и как решить эту проблему?
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>
Джава
@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);
}
2 ответа
Решение
Вы переопределяете эффект 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"
Когда вы меняете внешний вид по умолчанию, вы должны обрабатывать другое состояние, если вы хотите, как это
<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