【问题标题】:how to put an image in center above another image in android?如何将图像放在android中另一个图像上方的中心?
【发布时间】:2013-10-29 14:17:49
【问题描述】:

我想创建一个这样的布局:

我有 3 个不同的图像:背景、白色方块和 V 标志。

如果我想让盒子从一侧移动到另一侧,我如何将它们放置在照片中

当 onClick 被触发时,V 符号淡入\淡出。

我试过了:

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:background="@drawable/off_background">


             <ImageView
            android:id="@+id/handle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
             android:src="@drawable/handle"
            android:scaleType="centerInside" />

    <ImageView android:id="@+id/switch_v"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:src="@drawable/switch_v"
        android:layout_gravity="center"
        android:scaleType="centerInside"/>



</RelativeLayout>

这给了我正确的顺序,但不正确:

【问题讨论】:

    标签: java android xml animation layout


    【解决方案1】:

    您必须使用layout_align 处理此问题。我已经针对您的示例对其进行了测试,并且可以正常工作。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:background="@drawable/off_background" >
    
    <ImageView
        android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:scaleType="centerInside"
        android:src="@drawable/handle" />
    
    <ImageView
        android:id="@+id/switch_v"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/handle"
        android:layout_alignTop="@id/handle"
        android:layout_alignBottom="@id/handle"
        android:layout_alignRight="@id/handle"
        android:layout_gravity="center"
        android:scaleType="centerInside"
        android:src="@drawable/switch_v" />
    </RelativeLayout>
    

    【讨论】:

    • 没有比对齐所有方向更简单的方法吗? alignTop\Right\ect.. 和 android:layout_gravity="center" 有什么区别?
    • 对于这个例子,因为使用RelativeLayout,所以最好的方法是 alignTop\Right\etc。当您的layout_widthlayout_height 中有fill_parent 时,可以使用android:layout_gravity="center"
    【解决方案2】:

    为白色方块和 V 符号创建一个可绘制对象:

    white_square_and_V_sign.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item >
            <bitmap
                android:src="@drawable/handle"/>
        </item>
        <item>
            <bitmap
                android:gravity="center"
                android:src="@drawable/switch_v"/>
        </item>  
    </layer-list>  
    

    为白色方块创建一个drawable:

    white_square.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item >
            <bitmap
                android:src="@drawable/handle"/>
        </item>
    </layer-list>  
    

    创建一个选择器:

    mySelector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/white_square"
              android:state_pressed="true" />
        <item android:drawable="@drawable/white_square_and_V_sign" />
    </selector>  
    

    在你的布局中使用它:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:background="@drawable/off_background" >
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/mySelector"/>
    
    </RelativeLayout>
    

    【讨论】:

    • 这对我不好,因为我需要 V 符号与白框分开淡出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2023-03-10
    相关资源
    最近更新 更多