点击时不要将按钮带到前台

时间:2016-04-05 11:51:25

标签: android button relativelayout overlap z-order

我的应用程序目前如下所示。 Button中有三个RelativeLayout,中间按钮左右边距为负边距,与其他两个按钮重叠。

问题:当我点击左侧或右侧按钮时,它会进入前景一秒钟,并重叠中间按钮,看起来非常难看。

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>

2 个答案:

答案 0 :(得分:1)

默认按钮具有在触摸时运行的动画,并使用StateListAnimator执行此操作。运行的动画(提升按钮)会在触摸时调用,并更改视图的android:elevationandroid:translateZ属性(Google ref)。

要防止动画制作动画,只需停止在此视图上运行动画即可。使用:

android:stateListAnimator="@null"

答案 1 :(得分:0)

使用FrameLayout。您放在那里的所有物品都堆叠在一起。

或尝试:

将图片视图置于上方(位于顶部 - 父级的第一个子级) xml文件中的布局,使图像位于布局后面。

使用按钮无关紧要,它应该是相同的。 希望它有所帮助。

我从这个link

获得了这些信息

修改

这就是当我把你的代码转换成框架布局时可能会失去一些因为我无法在模拟器atm上启动它的样子。

Example of framelayout