将ImageView放在ImageView Android之上

时间:2014-11-15 16:29:27

标签: android android-layout

我看过这里的其他链接,但没有一个有效。我有一个LinearLayout(主容器是RelativeLayout),然后是LinearLayout内的ImageView和ImageView。我试图在主要的ImageView内容上放置一个播放按钮。

这是LinearLayout:

<LinearLayout android:orientation="horizontal" android:id="@+id/attach_previews_facebook" android:paddingLeft="64.0dip" android:layout_width="fill_parent" android:layout_height="150dip" android:layout_marginRight="8.0dip" android:layout_below="@id/attach_articles"> 
    <ImageView android:id="@+id/attach_preview_1" android:visibility="visible"
        android:layout_width="fill_parent" android:layout_height="match_parent"
        android:scaleType="center" 
        android:layout_weight="1"/>
    <ImageView android:id="@+id/videobtn" android:visibility="visible"
        android:layout_width="fill_parent" android:layout_height="match_parent"
        android:scaleType="center" 
        android:layout_weight="1"
        android:background="@drawable/play_button"/>        
</LinearLayout>

除了在attach_preview_1旁边放置播放按钮(而不是在其上面)之外,layout_weight不执行任何操作。

2 个答案:

答案 0 :(得分:2)

看看FrameLayout。此ViewGroup将所有Views堆叠在一起。

请参阅:http://developer.android.com/reference/android/widget/FrameLayout.html

注意:我强烈建议您使用ImageButton或无边框按钮代替ImageView进行此类任务。

更多信息:ButtonsImageButtonBorderless

示例代码:

<FrameLayout
    android:id="@+id/attach_previews_facebook"
    android:layout_width="fill_parent"
    android:layout_height="150dip"
    android:layout_below="@id/attach_articles"
    android:layout_marginRight="8.0dip"
    android:paddingLeft="64.0dip" >

    <ImageView
        android:id="@+id/attach_preview_1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="center"
        android:visibility="visible" />

    <ImageView
        android:id="@+id/videobtn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/play_button"
        android:scaleType="center"
        android:visibility="visible" />

</FrameLayout>

答案 1 :(得分:2)

您可以使用Layer ListFrameLayout

来实现这一目标

图层列表approch

res / drawable / layers.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

此布局XML将drawable应用于视图:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

<强>结果

enter image description here

FrameLayout approch

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:id="@+id/attach_previews_facebook" android:paddingLeft="64.0dip"
    android:layout_width="fill_parent" android:layout_height="150dip" android:layout_marginRight="8.0dip"
    >
    <ImageView android:id="@+id/attach_preview_1" android:visibility="visible"
        android:layout_width="fill_parent" android:layout_height="match_parent"
        android:scaleType="center"
        android:background="@drawable/iconevaleurs"
        android:layout_weight="1"/>

    <ImageView android:id="@+id/videobtn" android:visibility="visible"
        android:layout_width="127dp" android:layout_height="66dp"
        android:scaleType="center"
        android:layout_weight="1"
        android:background="@drawable/iconevaleurs"
        android:layout_gravity="center_horizontal|top" />
</FrameLayout>

enter image description here