我试着解释我的问题。我有两个ImageViews。 其中一个是背景图像,也很大。
此背景图像还具有缩放功能。另一张图片是一张尺寸为36x36的小图片。
小图像可以在屏幕上移动:
public boolean onTouch(View view, MotionEvent event) {
final int X = (int) event.getRawX();
final int Y = (int) event.getRawY();
//Definition MotionEvent.ACTION_MASK: Bit mask of the parts of the action code that are the action itself.
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
_xDelta = X - lParams.leftMargin;
_yDelta = Y - lParams.topMargin;
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
.getLayoutParams();
layoutParams.leftMargin = X - _xDelta;
layoutParams.topMargin = Y - _yDelta;
layoutParams.rightMargin = -250;
layoutParams.bottomMargin = -250;
view.setLayoutParams(layoutParams);
break;
}
viewGroup.invalidate();
return true;
}
如果我放大背景图像,小图像不会缩放。它的位置对于屏幕是绝对的,而不是图像。
如何让小图像相对于大图像?
我希望我的问题很清楚。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/root">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/skizze"
android:scaleType="matrix"
/>
<ImageView
android:layout_width="55dp"
android:layout_height="55dp"
android:id="@+id/feuerloescher"
android:layout_gravity="center_horizontal|top"
android:layout_alignParentTop="false"
android:src="@drawable/feuerloescher"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="false" />
</RelativeLayout>
答案 0 :(得分:0)
尝试使用android:layout_below="@id/skizze"
尝试以下xml代码
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/skizze"
android:scaleType="matrix"
/>
<ImageView
android:layout_width="55dp"
android:layout_height="55dp"
android:id="@+id/feuerloescher"
android:layout_gravity="center_horizontal|top"
android:layout_alignParentTop="false"
android:src="@drawable/feuerloescher"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="false"
android:layout_below="@id/skizze" />
答案 1 :(得分:0)
我知道这是一篇旧帖子,但以防万一它有助于我遇到同样的问题并且能够按如下方式解决它。
android:layout_alignTop="@id/app_bg_fill"
"alignTop" 似乎是关键线。完整代码如下。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/app_bg_fill"
android:orientation="vertical" >
<ImageView
android:id="@+id/app_bg_fill"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="60dp"
android:layout_marginTop="100dp"
android:scaleType="fitEnd"
android:src="@drawable/guide_item_2f"
android:background="@drawable/view_frame_style" />
<TextView
android:layout_width="match_parent"
android:layout_height="100sp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="20sp"
android:layout_marginRight="20sp"
android:layout_marginBottom="20sp"
android:background="#00000000"
android:layout_centerInParent="true"
android:padding="12sp"
android:text="SomeText"
android:layout_alignTop="@id/app_bg_fill"
android:textColor="#000000" />
</RelativeLayout>