我正在使用JawsWare - Overlay View中的代码来创建一个覆盖所有内容的视图。
这很好用,但我无法根据我的需要调整给定的布局。
我想要什么:两个阶段。 第一阶段:左上角的按钮始终位于所有其他应用之上。 按下此按钮后,我们进入第二阶段:
按钮被两个图像替换,这两个图像在距离顶部一定距离处水平对齐,再次漂浮在其他所有图像之上。
我不得不承认我并不真正理解Android Layouting,但我试图摆弄 RelativeLayout 和 ImageView ,但它似乎有些错误。 另外,我遇到了一个非常奇怪的行为:即使图像在左上角只有大约200x200像素,几乎整个屏幕被视图“阻挡”(它接收所有TouchEvents,即使应该有任何东西)。似乎如果我使用边距将布局放置在屏幕中间浮动,则可见按钮左侧和顶部的所有内容也会接收触摸事件,而不会让它们传递到底层应用程序(即使没有可见内容)。
为什么会发生这种情况以及如何规避这一点的任何想法?
其次:我怎样才能实现之前的两种布局?
编辑1:我的布局。 (请记住,我刚刚复制了这个,然后做了我认为正确的事情)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:onClick="overlayTextClicked"
android:padding="0dp"
android:id="@+id/overlay_layout_id"
>
<ImageView
android:id="@+id/imageview_info"
android:layout_width="200px"
android:layout_height="200px"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:scaleType="fitXY"
android:src="@drawable/picture_010512233437384578"
android:contentDescription=""/>
<TextView
android:id="@+id/textview_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:text="info"
android:textColor="#FFF"
android:orientation="vertical"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>
之后我试图将RelativeLayouts Gravity设置为TOP | CENTER_VERTICAL,最高保证金为200px。
答案 0 :(得分:1)
我相信这里发生的是TextView
正在填写整个屏幕。
wrap_content
将视图的大小与其内容区分开来。 match_parent
将视图填充到可以获得的大小(即,容器绑定的大小)。
因此,在这种情况下,您的RelativeLayout
没有绑定的最大尺寸。你的TextView
会尽量变得尽可能大,所以它会填满整个屏幕。同样地,RelativeLayout
将会爆炸到那个大小以包裹TextView
。
另外,RelativeLayout
并没有真正回应Gravity。这在LinearLayout
和FrameLayout
容器中使用了很多,但RelativeLayout
关系规则如&#34; CENTER_IN_PARENT&#34;将覆盖你设置的任何重力(如果你设置Gravity.RIGHT和&#34; CENTER_IN_PARENT&#34;,那么我必须赢得胜利)。