我需要创建一个对话框,其中包含一个简单的方形ImageButtons矩阵(如图标),数量不明,还有一个取消按钮。该对话框应该以编程方式和可滚动的方式充气。
我真的很困惑:我应该创建自定义布局并将其应用于AlertDialog吗?我怎么能拦截点击?我应该使用PopUpWiew吗?我应该将其作为活动吗?
如果我创建一个新的Activity ...我应该使用Runnable吗? 请不要向我提供完整的消息来源,我只需要了解满足这种需求的正确方向。
提前谢谢。
答案 0 :(得分:0)
您可以使用对话框并将布局文件设置为它。对话框类似于迷你活动,可以调用实际活动并随意解除。
这是自定义布局文件 - customLayout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
tools:context=".AutoMode" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:layout_above="@+id/relativeLayout2"
android:layout_centerHorizontal="true" >
<Button
android:id="@+id/button1"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/blue_gradient"
android:layout_alignRight="@+id/relativeLayout1"
android:layout_alignTop="@+id/relativeLayout1"/>
<Button
android:id="@+id/button2"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/black_gradient"
android:layout_alignTop="@+id/relativeLayout1"
android:layout_toRightOf="@+id/button1"/>
<Button
android:id="@+id/button3"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:layout_toRightOf="@+id/button2"
android:background="@drawable/red_gradient" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<Button
android:id="@+id/button4"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/yellow_gradient"
android:layout_alignRight="@+id/relativeLayout2"
android:layout_alignTop="@+id/relativeLayout2" />
<Button
android:id="@+id/button5"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/metallic_gradient"
android:layout_alignTop="@+id/relativeLayout2"
android:layout_toRightOf="@+id/button4" />
<Button
android:id="@+id/button6"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/purple_gradient"
android:layout_alignTop="@+id/relativeLayout2"
android:layout_toRightOf="@+id/button5"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/relativeLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:layout_below="@+id/relativeLayout2"
android:layout_centerHorizontal="true" >
<Button
android:id="@+id/button7"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/green_gradient"
android:layout_alignRight="@+id/relativeLayout3"
android:layout_alignTop="@+id/relativeLayout3" />
<Button
android:id="@+id/button8"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/orange_gradient"
android:layout_alignTop="@+id/relativeLayout3"
android:layout_toRightOf="@+id/button7" />
<Button
android:id="@+id/button9"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="3dp"
android:background="@drawable/violet_gradient"
android:layout_alignTop="@+id/relativeLayout3"
android:layout_toRightOf="@+id/button8" />
</RelativeLayout>
以下是如何将此布局设置为要调用它的活动中的对话框:
final Dialog customDialog = new Dialog(this);
customDialog.setTitle("Matrix");
disclaimer.setContentView(R.layout.customLayout);
Button b1 = (Button) customDialog.findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Do whatever you want when button1 is clicked
}
});
.
.//same for other buttons
.
Button b9 = (Button) customDialog.findViewById(R.id.button9)
b9.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Do whatever you want when button9 is clicked
}
});
Button close = (Button) customDialog.findViewById(R.id.dismiss);
customDialog.show();
close.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
disclaimer.dismiss();
}
});