单击时对话框中的按钮不表现为按钮
Button in dialog not behaving as a button when clicked
在创建和测试我的自定义对话框后,我注意到我的按钮在单击时没有显示任何视觉变化迹象(例如涟漪效应或突出显示)。有谁知道我做错了什么以及如何解决这个问题?
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);
}
当你改变你的默认外观时,你应该像这样处理不同的状态
<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 可绘制对象并添加为 android:background
您可以通过添加背景色来覆盖默认的点击效果。
android:background="@color/green"
您可以通过在可绘制对象上创建自定义背景 xml 文件来实现,就像这样。
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"
在创建和测试我的自定义对话框后,我注意到我的按钮在单击时没有显示任何视觉变化迹象(例如涟漪效应或突出显示)。有谁知道我做错了什么以及如何解决这个问题?
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);
}
当你改变你的默认外观时,你应该像这样处理不同的状态
<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 可绘制对象并添加为 android:background
您可以通过添加背景色来覆盖默认的点击效果。
android:background="@color/green"
您可以通过在可绘制对象上创建自定义背景 xml 文件来实现,就像这样。
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"