将ImageView位置锚定到另一个正在缩放的​​ImageView

时间:2013-09-04 17:33:18

标签: android xml scale

我有这个布局:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/rel2"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#ffffff" >

  <ImageView
    android:id="@+id/tree"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/lemon_large"
    android:scaleType="centerCrop"
    />
  <ImageView 
      android:id="@+id/fruit"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/lemonpiece"
      android:layout_alignLeft="@+id/tree"
      android:layout_alignTop="@+id/tree"
      android:layout_marginLeft="95dp"
      android:layout_marginTop="136dp"/>

树正在缩放,顶部和底部始终被裁剪。这是因为屏幕高度变化。我想做的是拥有固定的图像视图,无论它被缩放多少,它都总是在相对于图像视图的相同位置。

我尝试了不同的scaleType值,但实际上它实际上是缩放图像,并且在每个屏幕上,图像都是相对于“树”的其他位置。

我尝试的另一种可能性是将它对齐到屏幕的顶部(alignParentTop,alignParentLeft,scaleType =“matrix”)但这不会起作用,因为有些屏幕非常短,然后图片无法正确适应屏幕。换句话说,我需要保留可伸缩性并锚定顶部图像。

任何想法?

1 个答案:

答案 0 :(得分:0)

为Dimensions创建资源XML文件,并输入以下内容,

<强> image_dimens.xml:

<dimen name="myValueX">95dp</dimen>
<dimen name="myValueY">136dp</dimen>

在显示ImageViews的活动中

    int myValueX = (int) getResources().getDimension(R.dimen.myValueX);
    int myValueX = (int) getResources().getDimension(R.dimen.myValueX);

    ImageView ivFruit = (ImageView) findViewById(R.id.fruit);
    ImageView ivTree = (ImageView) findViewById(R.id.tree);
    ivFruit.setX(ivTree.getX() + myValueX);
    ivFruit.setY(ivTree.getY() + myValueY);

希望这会有所帮助,Happy Coding!