点击时不要将按钮置于前景

7

我的应用目前看起来像下面这样。在一个RelativeLayout中有三个Button,中间的按钮具有负边距左右重叠其他两个按钮。

问题:当我点击左侧或右侧按钮时,它会在前台停留一秒钟,并覆盖中间的按钮,这看起来非常丑陋。

enter image description here

enter image description here

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">

        <Button
            android:id="@+id/voices"
            android:layout_width="160dp"
            android:layout_height="wrap_content"

            android:layout_gravity="center_vertical"

            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:onClick="clickVoices"
            android:background="#333"
            android:textColor="#fff"
            android:text="@string/main_voices" />

        <Button
            android:id="@+id/chat"
            android:layout_width="160dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"

            android:onClick="clickChat"
            android:background="#333"
            android:textColor="#fff"
            android:text="@string/main_chat" />

        <Button
            android:id="@+id/record"
            android:layout_width="60dp"
            android:layout_height="100dp"

            android:clickable="true"
            android:onClick="clickRecord"
            android:scaleType="centerInside"
            android:src="@drawable/record"
            android:text="Record"
            android:layout_toRightOf="@+id/voices"
            android:layout_toLeftOf="@+id/chat"
            android:layout_marginLeft="-20dp"
            android:layout_marginRight="-20dp"
            android:layout_marginTop="-30dp"
            android:background="@drawable/round_button"

            android:paddingTop="30dp"
            android:layout_marginBottom="10dp" />
    </RelativeLayout>

昨天已经回答了。可能是重复问题?https://stackoverflow.com/questions/36392715/overlapping-buttons-prevent-button-from-raising-on-touch/36414403#36414403。无论如何,我发布的答案有效。 - CaptJak
哦,你的问题比我之前提供的链接里的那个更好,根据这篇帖子,应该标记另一个为重复。但是我不知道该如何处理我的答案。前往 Meta 寻求指导:Should I move my answer to a new duplicate? - CaptJak
recordButton 移出 RelativeLayout 怎么样?或者把另外两个按钮放到 LinearLayout 里,这样 recordButton 就可以自然地浮在顶部。 - sakiM
2个回答

6

尽管它能够工作,但了解如何在仅更改平移+高度的情况下保留StateListAnimator的所有属性将非常有用,以便Android不会将其置于前台。是否有一种方法可以做到这一点? - BourbonCreams

0

使用FrameLayout。您放置在其中的所有项目都会堆叠在一起。

或者尝试:

将图像视图放在xml文件中布局的顶部(最上面-父级的第一个子元素),这样图像就会在布局后面。

您使用按钮不应该有影响,应该是相同的。希望能帮到您。

我从link获取了这些信息。

编辑:

这是当我将您的代码转换为FrameLayout时的外观,也许我错过了什么,因为我目前无法在模拟器上启动它。

Example of framelayout


嘿,我也这么想,但我不知道如何在FrameLayout中实现它,以使其仍然看起来与上面的一样。 - poitroae
@poitroae 快速制作了相同的布局,我可以让它看起来像这样,但我没有所有所需的资源文件,你能否尝试删除此布局并创建一个新的?-- 我正在编辑我的答案以向您展示我的视图-- - Robbert
@poitroae 顺便问一下,你有没有试过将代码从记录按钮移到其他按钮上方? 我在某个地方看到说这样有时候也有帮助。 我自己也是 Android 编程新手,所以对此并不很了解 :) - Robbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接