java - 如何禁用相同布局的按钮之间的交互?

标签 java android

我有两组布局,其中填充了按钮。有没有办法禁用相同布局的按钮之间的任何交互?当我单击一个按钮,然后单击同一布局中的另一个按钮时,我不需要发生任何事情。我用“和”标记每个按钮,表示属于上部和下部布局的按钮。我每种都有 5 个。 我在相反布局的按钮之间有一些交互,并且工作正常(实际上任何两个给定按钮之间的交互都可以正常工作,但这很糟糕),但我不希望相同布局的按钮之间进行交互。

这是我的游戏类,不是全部,只是重要的部分。另外,我删除了其余按钮的代码,只留下 4 个按钮,每个布局 2 个,以节省一些空间。我从 sqlite 数据库导入一些文本,并将其随机设置到我的按钮。

final OnClickListener clickListener = new OnClickListener() {

            private Button buttonClicked;

            public void onClick(View v) {


                Button button = (Button) v;
                button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333));

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;
                } else {
                    // second button is clicked
                    if (buttonClicked.getTag().equals(button.getTag())) {
                        button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                        buttonClicked.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                      buttonClicked.setEnabled(false);
                        button.setEnabled(false);
                    } else {
                        buttonClicked.setEnabled(false);
                        buttonClicked.setTextColor(Color.GRAY);
                        buttonClicked.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFCC99));
                        button.getBackground().clearColorFilter();
                    }
                    buttonClicked = null;

            }
     };




    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.game);

        a1 = (Button) findViewById(R.id.bA1);
        a2 = (Button) findViewById(R.id.bA2);
        b1 = (Button) findViewById(R.id.bB1);
        b2 = (Button) findViewById(R.id.bB2);

        nextQuestion();
        }

        public void nextQuestion() {


        TestAdapter mDbHelper = new TestAdapter(this);
        mDbHelper.createDatabase();

        try{ 

            mDbHelper.open();

            Cursor c = mDbHelper.getTestData(generateWhereClause());

            mAnsweredQuestions.add(c.getLong(0));

            ArrayList<MyStruct> labelsA = new ArrayList<MyStruct>();
            ArrayList<MyStruct> labelsB = new ArrayList<MyStruct>();

            labelsA.add(new MyStruct(c.getString(2), "1")); // this tag should be the same to button that matches
            labelsB.add(new MyStruct(c.getString(3), "1"));
            labelsA.add(new MyStruct(c.getString(4), "2"));
            labelsB.add(new MyStruct(c.getString(5), "2"));


            Collections.shuffle(labelsA);
            Collections.shuffle(labelsB);


            pitanje.setText(c.getString(1));

            a1.setText(labelsA.get(0).label);
            a1.setTag(labelsA.get(0).tag);
            a1.setOnClickListener(clickListener);
            a1.getBackground().clearColorFilter();
            a1.setEnabled(true);
            b1.setText(labelsB.get(0).label);
            b1.setTag(labelsB.get(0).tag);
            b1.setOnClickListener(clickListener);
            b1.getBackground().clearColorFilter();
            b1.setEnabled(true);
            a2.setText(labelsA.get(1).label);
            a2.setTag(labelsA.get(1).tag);
            a2.setOnClickListener(clickListener);
            a2.getBackground().clearColorFilter();
            a2.setEnabled(true);
            b2.setText(labelsB.get(1).label);
            b2.setTag(labelsB.get(1).tag);
            b2.setOnClickListener(clickListener);
            b2.getBackground().clearColorFilter();
            b2.setEnabled(true);


        }


        finally{ 
            mDbHelper.close();
        }

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/background">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:gravity="top|center"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvPitanje"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Ovde ce biti postavljeno pitanje"
            android:textColor="#ffffff"
            android:textSize="18sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="360dp"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/kolona1"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="50"
            android:gravity="top"
            android:orientation="vertical"
            android:paddingLeft="3dp"
            android:paddingRight="2dp" >

            <Button
                android:id="@+id/bA1"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_gravity="clip_horizontal"
                android:layout_marginBottom="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="center_vertical|center_horizontal"
                android:padding="0dp"
                android:tag="l"
                android:text="A1"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA2"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A2"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA3"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A3"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA4"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A4"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA5"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A5"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA6"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A6"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA7"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A7"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bA8"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:text="A8"
                android:background="@drawable/buttons"
                android:textColor="#ffffff"
                android:layout_marginTop="1.5dp"
                android:tag="l"
                android:padding="0dp"
                android:textSize="16sp" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/kolona2"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="50"
            android:gravity="top"
            android:orientation="vertical"
            android:paddingLeft="2dp"
            android:paddingRight="3dp" >

            <Button
                android:id="@+id/bB1"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_gravity="top|fill_horizontal"
                android:layout_marginBottom="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B1"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB2"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B2"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB3"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B3"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB4"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B4"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB5"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B5"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB6"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B6"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB7"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginBottom="1.5dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B7"
                android:textColor="#ffffff"
                android:textSize="16sp" />

            <Button
                android:id="@+id/bB8"
                android:layout_width="fill_parent"
                android:layout_height="41dp"
                android:layout_marginTop="1.5dp"
                android:background="@drawable/buttons"
                android:gravity="top|center_horizontal"
                android:tag="r"
                android:text="B8"
                android:textColor="#ffffff"
                android:textSize="16sp" />

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:weightSum="3" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center" >

            <Button
                android:id="@+id/bIzlaz"
                android:layout_width="80dp"
                android:layout_height="42dp"
                android:layout_gravity="center"
                android:background="@drawable/buttons"
                android:gravity="center"
                android:text="Izlaz!"
                android:textColor="#ffffff"
                android:textSize="20sp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center" >

            <TextView
                android:id="@+id/tvPoeni"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tvScore"
                android:textColor="#ffffff"
                android:textSize="21sp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center" >

            <TextView
                android:id="@+id/tvVreme"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="30"
                android:textColor="#ff0000"
                android:textSize="21sp" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

最佳答案

您可以使用getParent方法并比较两个 View 的父 View 。如果父级相同,则按钮具有相同的布局,并且不会发生任何情况。

改变你的其他:

} else {
    // second button is clicked

...到 else if:

// only do stuff if buttons are in different layouts
} else if (button.getParent () != buttonClicked.getParent()) {
     // second button is clicked

关于java - 如何禁用相同布局的按钮之间的交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754577/

相关文章:

android - Android应用程式Math游戏当机

android - 如何防止在android fragment 中按下后退按钮时调用onCreateView

java - android可以将字符串作为代码执行吗?

android - 动态添加单选按钮时在单选组中发出问题

android - Android上INSTALL_FAILED_INSUFFICIENT_STORAGE错误的解决方案

java - Web 服务互操作性

java - 满足所有这些标准的分布式数据层缓存系统?

java - 如何使用 Java Swing 定时器在每次触发时做不同的事情?

java - 抽象返回对象列表的方法

Java 在 Qt 5.7 for Android 中执行但不执行 C++(在之前的 Qt 中工作)