我正在使用FrameLayout并希望按下这个按钮:
如何在XML中执行此操作?按钮需要始终位于图像视图的底部。
这是我的xml:
<?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">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:adjustViewBounds="true"
android:scaleType="fitCenter"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true" />
</RelativeLayout>
答案 0 :(得分:1)
我相信在RelativeLayout中可以更容易地完成这个
<RelativeLayout ...>
<ImageView (image) ...>
<Button (button)
android:layout_alignParentBottom="true"
android:layout_centerInParent="true" />
</RelativeLayout>
在图像中添加少量填充也应该达到与底部重叠的效果。 有了这个,您应该可以轻松地将按钮放在您想要的位置。
这是一个代码的示例,该代码正在投入使用并处理我编写的测试应用程序:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="200dp">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/login_logo"
android:paddingEnd="0dp"
android:paddingStart="0dp"
android:paddingBottom="15dp" />
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true" />
</RelativeLayout>
Here's一张图片显示在行动中,抱歉我使用的图像不太理想。
答案 1 :(得分:0)
在android(pre Lollipop)中没有办法自然地做到这一点。我的建议是诱使用户认为你在另一个视图中错开了一个视图。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/full_header"
android:layout_width="match_parent"
android:layout_height="148"
android:clipChildren="false">
<ImageView
android:id="@+id/background_image"
android:layout_width="wrap_content"
android:layout_height="120dp"
android:contentDescription="@string/background_image_contentdescription"
android:adjustViewBounds="true"
android:layout_alignParentTop="true"/>
<Button
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true">
</Button>
</RelativeLayout>
然后在我设置此视图的代码中。
//The large view is an Image with a fixed height of 120dp
int bgImageHeight = FSUtils.dpToPixels(120, getResources().getDisplayMetrics());
//The small view is a Relative Layout with a fixed height of 56 dp.
int dataLeafHeight = FSUtils.dpToPixels(56, getResources().getDisplayMetrics());
//The full header contains the two and its minimum height is set
// to the height of the large image + half the height of the small view
full_header.setMinimumHeight(bgImageHeight + dataLeafHeight/2);
然后使用对齐父底部并对齐父顶部将视图拉到顶部和底部,使较小的视图错开大背景视图的边界。
我相信在新的操作系统LolliPop中有一种方法可以做到这一点,但我还没有尝试过。也许其他人可以参与其中。
我希望这会有所帮助。 快乐编码