0
我將colors.xml
添加到AlertDialog
,並希望它在單擊某個視圖時作出響應。對話框顯示正確,當我在其中一個視圖上執行performClick()
時。但是當我嘗試在手機上運行它並單擊時,監聽器不會被觸發,儘管它應該是。自定義AlertDialog view.onClickListener無法正常工作
這裏是我的代碼:
我MainActivity.java
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("pick a color");
builder.setCancelable(true);
FlexboxLayout fl_colors = (FlexboxLayout) layoutInflater.inflate(R.layout.colors,null);
builder.setView(layoutInflater.inflate(R.layout.colors,null));
final AlertDialog alert = builder.create();
for(int i=0;i<fl_colors.getChildCount();i+=1){
View v_color = fl_colors.getChildAt(i);
Log.d("DEBUG",v_color.toString()); // logs the element like: android.view.View{a7d0c87 V.ED..... ......I. 0,0-0,0 #7f0d00a6 app:id/btn_6}
v_color.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String color = (String) v.getTag();
Log.d("DEBUG",color);
alert.dismiss();
}
});
}
builder.show();
而且我colors.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:flexWrap="wrap"
android:id="@+id/fb_colors">
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_0"
android:background="@drawable/circle"
android:backgroundTint="#16a085"
android:tag="#16a085"
android:layout_margin="5dp"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_1"
android:background="@drawable/circle"
android:backgroundTint="#27ae60"
android:tag="#27ae60"
android:layout_margin="5dp"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_2"
android:background="@drawable/circle"
android:backgroundTint="#2980b9"
android:tag="#2980b9"
android:layout_margin="5dp"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_3"
android:background="@drawable/circle"
android:backgroundTint="#8e44ad"
android:tag="#8e44ad"
android:layout_margin="5dp"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_4"
android:background="@drawable/circle"
android:backgroundTint="#f39c12"
android:tag="#f39c12"
android:layout_margin="5dp"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_5"
android:background="@drawable/circle"
android:backgroundTint="#d35400"
android:tag="#d35400"
android:layout_margin="5dp"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/btn_6"
android:background="@drawable/circle"
android:backgroundTint="#c0392b"
android:tag="#c0392b"
android:layout_margin="5dp"/>
</com.google.android.flexbox.FlexboxLayout>