PopUpView或AlertDialog,带有ImageButton矩阵

时间:2013-01-12 16:29:32

标签: android

我需要创建一个对话框,其中包含一个简单的方形ImageButtons矩阵(如图标),数量不明,还有一个取消按钮。该对话框应该以编程方式和可滚动的方式充气。

我真的很困惑:我应该创建自定义布局并将其应用于AlertDialog吗?我怎么能拦截点击?我应该使用PopUpWiew吗?我应该将其作为活动吗?

如果我创建一个新的Activity ...我应该使用Runnable吗? 请不要向我提供完整的消息来源,我只需要了解满足这种需求的正确方向。

提前谢谢。

1 个答案:

答案 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();
        }
    });