视图隐藏在android活动中的其他视图后面

Posted

技术标签:

【中文标题】视图隐藏在android活动中的其他视图后面【英文标题】:view getting hid behind other view in android activity 【发布时间】:2013-12-09 07:02:12 【问题描述】:

我正在尝试全屏加载图像并放置两个按钮栏(一个在顶部,一个在底部)。但是当我测试该应用程序时,顶部栏被完整图像隐藏,而底部栏正确显示。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ >

<RelativeLayout
    android:id="@+id/relshare"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="#60000000" >

    <Button
        android:id="@+id/btnBack"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/setaswallpaper"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/back_button"
        android:gravity="right" />

    <Button
        android:id="@+id/setaswallpaper"
        android:layout_
        android:layout_
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/set_wallpaper"
        android:gravity="right"
        android:textSize="25sp" />

    <Button
        android:id="@+id/bshare"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/setaswallpaper"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/share"
        android:gravity="right" />
</RelativeLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_
    android:layout_
    android:fadingEdgeLength="10dp"
    android:filterTouchesWhenObscured="true"
    android:focusableInTouchMode="false"
    android:scrollbarDefaultDelayBeforeFade="100000" />

<ProgressBar
    android:id="@+id/pb"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />

<RelativeLayout
    android:id="@+id/relshare2"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:background="#60000000" >

    <LinearLayout
        android:layout_
        android:layout_
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bfavorite"
            android:layout_
            android:layout_
            android:background="@drawable/favorite1"
            android:gravity="left"
            android:padding="10dp"
            android:textSize="25sp" />

        <TextView
            android:layout_
            android:layout_ />

        <Button
            android:id="@+id/download"
            android:layout_
            android:layout_
            android:background="@drawable/download"
            android:gravity="right"
            android:padding="10dp"
            android:textSize="25sp" />
    </LinearLayout>

    <Button
        android:id="@+id/info"
        style="?android:attr/buttonStyleSmall"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/info" />

    <Button
        android:id="@+id/reportissue"
        style="?android:attr/buttonStyleSmall"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:background="@drawable/report_issue"
        android:text="" />
</RelativeLayout>
</RelativeLayout>

请帮我解决这个错误

【问题讨论】:

尝试使用FrameLayout作为根布局 【参考方案1】:

在你的 xml 中试试这个?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ >

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_
    android:layout_
    android:fadingEdgeLength="10dp"
    android:filterTouchesWhenObscured="true"
    android:focusableInTouchMode="false"
    android:scrollbarDefaultDelayBeforeFade="100000" />

<ProgressBar
    android:id="@+id/pb"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />

<RelativeLayout
    android:id="@+id/relshare"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="#60000000" >

    <Button
        android:id="@+id/btnBack"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/setaswallpaper"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/back_button"
        android:gravity="right" />

    <Button
        android:id="@+id/setaswallpaper"
        android:layout_
        android:layout_
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/set_wallpaper"
        android:gravity="right"
        android:textSize="25sp" />

    <Button
        android:id="@+id/bshare"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/setaswallpaper"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/share"
        android:gravity="right" />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/relshare2"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:background="#60000000" >

    <LinearLayout
        android:layout_
        android:layout_
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bfavorite"
            android:layout_
            android:layout_
            android:background="@drawable/favorite1"
            android:gravity="left"
            android:padding="10dp"
            android:textSize="25sp" />

        <TextView
            android:layout_
            android:layout_ />

        <Button
            android:id="@+id/download"
            android:layout_
            android:layout_
            android:background="@drawable/download"
            android:gravity="right"
            android:padding="10dp"
            android:textSize="25sp" />
    </LinearLayout>

    <Button
        android:id="@+id/info"
        style="?android:attr/buttonStyleSmall"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/info" />

    <Button
        android:id="@+id/reportissue"
        style="?android:attr/buttonStyleSmall"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:background="@drawable/report_issue"
        android:text="" />
</RelativeLayout>
</RelativeLayout>

重新排序 XML 总是有助于解决这个问题。

【讨论】:

非常感谢。它就像一个魅力。你能解释一下这背后的逻辑吗? 原因是您的浏览器出现在您的状态栏之后。在 android 视图刷新中,它按照您的 XML 的顺序进行。进一步的解释在这里:developer.android.com/reference/android/view/View.html#Drawing :) 我很高兴它有帮助!如果是,请将其标记为正确:) 我已经尝试接受这篇文章作为答案,但 SO 告诉我等待 5 分钟后再接受。【参考方案2】:

将以下属性添加到您的 ViewPager。

android:layout_below="@id/relshare"
android:layout_above="@id/relshare2"

当然,你必须将 relshare2 声明移到 ViewPager 上方。

【讨论】:

谢谢你的建议,但实际上我希望图像覆盖全屏 好的,那么只需将 relshare 声明移动到 xml 文件中的 ViewPager 下方。

以上是关于视图隐藏在android活动中的其他视图后面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中禁用 SlidingDrawer 后面的视图?

Listview隐藏在ActionBar后面

隐藏在 reyclerview 项目 android 后面的多行 EditText 视图

在Android中隐藏另一个视图后面的视图

如何隐藏片段内的活动视图

带有视觉跟踪弹出视图的 UISlider。隐藏在其他视图元素后面的弹出窗口