视图隐藏在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 后面的视图?