我怎样才能在FrameLayout右边alignment一个元素?

我有一个FrameLayout包含2个视图,第二个是像一个Close Button (X) ,我想把它放在右边。

我试过layout_gravity =“right”,但是没有奏效。

这是我的布局xml:

 <FrameLayout android:layout_width="320dp" android:layout_height="wrap_content" android:id="@+id/layoutSmallImg"> <ImageView android:id="@+id/bigImage" android:layout_width="320dp" android:layout_height="wrap_content"/> <ImageView android:id="@+id/bigImage" android:layout_width="320dp" android:layout_height="wrap_content"/> <ImageButton android:id="@+id/closebutton" android:background="@android:color/transparent" android:layout_height="30dp" android:layout_marginTop="10dp" android:layout_alignParentRight="true" android:layout_width="30dp" android:paddingLeft="40dp" android:visibility="gone" android:src="@drawable/close" /> </FrameLayout> 

Solutions Collecting From Web of "我怎样才能在FrameLayout右边alignment一个元素?"

我build议你改用一个RelativeLayout

FrameLayout被devise为阻挡屏幕上的一个区域来显示单个项目。 您可以将多个孩子添加到FrameLayout,并使用重力控制他们在FrameLayout中的位置。 孩子们被堆积在一起,最近新增了一个孩子。 框架布局的大小是其最大的孩子(加上填充)的大小,可见与否(如果FrameLayout的父母许可)。 只有在setConsiderGoneChildrenWhenMeasuring()设置为true的情况下,才能使用GONE视图进行大小调整。

顺便说一句,你想要在ImageView的顶部或旁边的button? 您将layout和imageView的宽度设置为相同的大小。


评论之后,我可以看到两个选项:

  • 机器人:paddingLeft = “250dp”

  • 使button大小320dp,并添加一个自定义的背景,大多是透明的。 使它补丁9,所以你可以确定在哪里添加文本(请参阅我的答案在这里如何做到这一点: 如何创buildandroid微调没有向下的三angular形的小工具右侧 )

阅读DOCS:

FrameLayout被devise为阻挡屏幕上的一个区域来显示单个项目。 一般来说,应该使用FrameLayout来保存单个子视图,因为以不同的屏幕尺寸可扩展的方式来组织子视图可能是困难的,而这些子视图没有儿童重叠。 但是,您可以将多个子元素添加到FrameLayout,并通过使用android:layout_gravity属性为每个子元素分配重力来控制其在FrameLayout中的位置。

尝试:

 <TextView ..... android:layout_gravity="right" /> 

你可以在一个FrameLayout的9个不同的地方放置一个视图

请享用

只要把你的元素放在FrameLayout里面到第二个RelativeLayout 。 并使用android:layout_alignParentRight =“true”作为要alignment的元素。

 <FrameLayout android:layout_width="320dp" android:layout_height="wrap_content" android:id="@+id/layoutSmallImg"> <RelativeLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/bigImage" android:layout_width="320dp" android:layout_height="wrap_content"/> <ImageButton android:id="@+id/closebutton" android:background="@android:color/transparent" android:layout_height="30dp" android:layout_marginTop="10dp" android:layout_alignParentRight="true" android:layout_width="30dp" android:paddingLeft="40dp" android:visibility="gone" android:src="@drawable/close" /> </RelativeLayout> </FrameLayout> 

改用RelativeLayout 。

以编程方式,您可以使用FrameLayout.LayoutParams设置边距。 以下内容将用于在屏幕底部放置一个视图:

 int desired_height_of_content = //whatever your want the height of your view to be FrameLayout layout = new FrameLayout(this); FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, desired_height_of_content); int difference = screen_height - desired_height_of_content flp.setMargins(difference, 0, 0, 0); layout.addView(your_view, flp); 

你想使用FrameLayout或RelativeLayout?

我的理解说,如果你想用另一个视图replace你的当前视图,则使用FrameLayout。 您的要求可以通过RelativeLayout完成。