无法在应用程序上单击按钮

时间:2016-09-09 22:44:03

标签: android xml

当我启动我的应用程序时,我会转到我的某个屏幕来测试我的游戏。但是,当我点击按钮时,它们不起作用,不会像我想要的那样改变图像。因此,经过各种谷歌搜索和测试,我相信我遇到了问题。我相信我只是将我的文本图层放在我的按钮图层上,导致按钮无法点击,因为它们不是顶层。我的问题是我需要在最上面的文字不断变化。如何制作,以便我的文字不会干扰我的按钮。 我为大量的代码道歉。按钮位于第三个相对布局中,文本全部位于中间。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:gravity="center_horizontal">

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/imageView"
            android:background="@drawable/backgroundupg" />

    </RelativeLayout>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent" android:layout_height="match_parent"
            android:gravity="center_horizontal" android:layout_weight="1">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView5"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:background="@drawable/upgrades"
            android:layout_gravity="center_horizontal" />

        </RelativeLayout>

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent" android:layout_height="match_parent"
            android:gravity="center_horizontal" android:layout_weight=".5">

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:weightSum="4">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/selector_state2_xml"
            android:id="@+id/upgbutton"
            android:layout_gravity="center_horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/selector_state3_xml"
            android:id="@+id/upgbutton1"
            android:layout_gravity="center_horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/selector_state4_xml"
            android:id="@+id/upgbutton2"
            android:layout_gravity="center_horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/selector_state5_xml"
            android:id="@+id/upgbutton3"
            android:layout_gravity="center_horizontal" />


            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:weightSum="8">

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/upgtext"
                    android:text="Accuracy"
                    style="@style/Base.TextAppearance.AppCompat.Large"
                    android:textColor="#ffffff" />

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:orientation="horizontal"
                    android:weightSum="2">

                    <TextView
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight=".5"
                        android:gravity="center_vertical|right"
                        android:id="@+id/pricetext"
                        android:text="100"
                        style="@style/Base.TextAppearance.AppCompat.Medium"
                        android:textColor="#ffffff" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.5"
                    android:id="@+id/upg1cost"
                    android:background="@drawable/cookie" />

                </LinearLayout>

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/bottomtext"
                    android:text="Eh, close enough."
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/upgtext2"
                    android:text="Base Cookies"
                    style="@style/Base.TextAppearance.AppCompat.Large"
                    android:textColor="#ffffff" />

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:orientation="horizontal"
                    android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:gravity="center_vertical|right"
                    android:id="@+id/pricetext2"
                    android:text="500"
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.5"
                    android:id="@+id/upg1cost"
                    android:gravity="center_vertical"
                    android:layout_alignRight="@+id/upgtext2"
                    android:background="@drawable/cookie" />

                </LinearLayout>

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/bottomtext2"
                    android:text="Double the cookies? Sweet!"
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/upgtext3"
                    android:text="Stopping Time"
                    style="@style/Base.TextAppearance.AppCompat.Large"
                    android:textColor="#ffffff" />

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:orientation="horizontal"
                    android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:gravity="center_vertical|right"
                    android:id="@+id/pricetext3"
                    android:text="1000"
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.5"
                    android:id="@+id/upg1cost"
                    android:gravity="center_vertical"
                    android:layout_alignRight="@+id/upgtext3"
                    android:background="@drawable/cookie" />

                </LinearLayout>

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/bottomtext3"
                    android:text="I save an extra second!"
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/upgtext4"
                    android:text="Secret"
                    style="@style/Base.TextAppearance.AppCompat.Large"
                    android:textColor="#ffffff" />

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:orientation="horizontal"
                    android:weightSum="2">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight=".5"
                    android:gravity="center_vertical|right"
                    android:id="@+id/pricetext4"
                    android:text="250 000"
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_weight="1.5"
                    android:id="@+id/upg1cost"
                    android:gravity="center_vertical"
                    android:layout_alignRight="@+id/upgtext4"
                    android:background="@drawable/cookie" />

                </LinearLayout>

                </RelativeLayout>

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_weight="1">

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:gravity="center_vertical|center_horizontal"
                    android:id="@+id/bottomtext4"
                    android:text="End game?!?!"
                    style="@style/Base.TextAppearance.AppCompat.Medium"
                    android:textColor="#ffffff" />

                </RelativeLayout>

            </LinearLayout>

        </RelativeLayout>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:gravity="center_horizontal" android:layout_weight="1">

    </RelativeLayout>

        </LinearLayout>

    </FrameLayout>

我还附带了一张图片,以帮助直观地展示我的代码。

What the screen looks like

对于那些想要确切知道我放在其中的人来说,我的选择器状态也是如此

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button" android:state_enabled="true"></item>
<item android:drawable="@drawable/buttonclick" android:state_pressed="true"></item>
<item android:drawable="@drawable/buttongray" android:state_enabled="false"></item>

</selector>

当用户有足够的现金购买升级时使用按钮。

当用户没有足够的现金时使用Buttongray,我不希望按钮可以按下。 Button颜色变为灰色。

Buttonclick只是Button的一个亮点。

我已经尝试过交换这两种状态,因为我认为这是最初的问题。两者都不能被按下。

3 个答案:

答案 0 :(得分:1)

问题是因为您将TextView对象放在Button对象上方,并且它们会窃取您想要Button的click事件。最简单的解决方法是设置:

android:focusable="false"

用于覆盖Button对象的所有TextView对象。

但我仍然会说你的编码风格需要改进。为什么不根据运行时发生的事件动态更改代码中的文本。您可以使用setText(CharSequence text)方法按钮动态设置应显示的文本。

答案 1 :(得分:0)

您可以在xml中使用按钮的属性android:text="TEXT_HERE"来设置按钮的初始文本,稍后点击,您可以通过此设置不同的文字

Button button = (Button)findViewById(R.id.upgbutton); button.setText("New_TEXT");

您在XML中的按钮代码将如下所示

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text = "Accuracy"
        android:background="@drawable/selector_state2_xml"
        android:id="@+id/upgbutton"
        android:layout_gravity="center_horizontal" />

答案 2 :(得分:0)

因为每个&#34;按钮&#34;如此复杂,您应该考虑创建自定义视图。