在android中将图像设置在图像上方

时间:2015-04-28 10:27:45

标签: android xml android-layout android-videoview

我想为Android应用创建以下视图。 视图应该是相对的,当它在不同的屏幕尺寸上打开时,视频视图应该在图像的框架内

preview

这是目前为止的xml文件:(

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/updatemsg"
    android:gravity="center"
    android:keepScreenOn="true"
    android:orientation="vertical"
    android:padding="10dp" >

    <VideoView
        android:id="@+id/upgradevideo"
        android:layout_width="757dp"
        android:layout_height="426dp"
        android:layout_marginBottom="0dp"
        android:layout_marginTop="55dp" />

    <Button
        android:id="@+id/upgrade_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK" />

</LinearLayout>

3 个答案:

答案 0 :(得分:1)

我不会使用FrameLayout,它的子节点没有关系属性(这里我们希望将视图转换为另一个)。

你接近(LinearLayout有背景)对我来说似乎是正确的。您所需要做的就是为您的布局找到合适的衬垫。我会删除layout_margin属性,只需在父版块上使用android:paddingTopandroid:paddingStartandroid:paddingEndandroid:paddingBottom

至于与不同设备的一致性,您可以设置不同的维度,例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/updatemsg"
    android:paddingTop="@dimen/padding_top" >

然后,您只需在不同的文件夹中定义dimen资源,因此将根据屏幕大小/方向使用不同的值呈现相同的属性。看看here

实施例: 的值/ dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="padding_top">20dp</dimen>
</resources>

实施例: 的值-XLARGE / dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="padding_top">40dp</dimen>
    <!-- this value will be used for very large devices -->
</resources>

我还建议您不要对layout_width的{​​{1}}和layout_heigth属性进行硬编码。尝试拥有动态值。

答案 1 :(得分:0)

您可以使用FrameLayout

<FrameLayout
    android:id="@+id/upgradevideo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

 //make childrens here,they will appear one above the other

</FrameLayout

答案 2 :(得分:0)

如果要在xml文件中查看另一个视图,则必须使用FrameLayout。 使用gravity属性使布局支持android中的所有类型的屏幕。 不要使用像素代替宽度和高度。始终使用fill_parent或wrap_content。

请参阅下面的代码以了解FrameLayout。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="centerCrop"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    android:background="#00000c"
    android:padding="10dp"
    android:text="Frame Layout Sample"
    android:textColor="#fafafa"
    android:textSize="22sp" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right|bottom"
    android:layout_marginLeft="5dp"
    android:background="#AA000000"
    android:padding="10dp"
    android:text="28/May/2015"
    android:textColor="#FFFFFF"
    android:textSize="18sp" />