2013-09-04 4 views
0

Я получил этот макет:Anchor ImageView положение другому ImageView, который масштабируются

<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"/> 

Дерево масштабируются, верх и низ всегда обрезается. Это связано с изменчивостью экранов по высоте. То, что я хочу сделать, - это иметь фиксированный вид изображения, который всегда находится в одном и том же месте относительно изображения, независимо от того, насколько он масштабируется.

Ive пробовал разные значения scaleType, но он всегда фактически масштабирует изображение, и на каждом экране изображение находится где-то в другом месте относительно «дерева».

Еще одна возможность, которую я попытался, - выровнять ее в верхней части экрана (alignParentTop, alignParentLeft, scaleType = "matrix"), но это не будет работать, поскольку, поскольку некоторые экраны очень короткие, а затем изображение не будет вписываться в экран должным образом. Другими словами, мне нужно сохранить масштабируемость и привязать верхние изображения.

Любые идеи?

ответ

0

Создание 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!

+0

Привет, это не будет работать. Сначала мне нужно знать, сколько было «дерева», а затем умножить коэффициент масштабирования с фиксированными полями ... Любые идеи, как это сделать? – Jenda