ImageView в пределах AbsoluteLayout, Как установить координаты X, Y ImageView? - PullRequest
0 голосов
/ 02 декабря 2011

То, что я пытаюсь сделать, это создать версию карты GPS для бедного человека.Я установил изображение «карты» в качестве фона AbsoluteLayout, а затем создал крошечное квадратное изображение размером 20x20, которое мне нужно переместить в разные координаты.Как мне сделать это в коде Java?

 <AbsoluteLayout
    android:id="@+id/llMapContainer"
    android:layout_width="match_parent"
    android:layout_height="390dp"
    android:layout_x="0dp"
    android:layout_y="44dp"
    android:background="@drawable/a4000vert"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imgLocation"
        android:layout_width="20px"
        android:layout_height="20px"
        android:layout_x="312px"
        android:layout_y="300px"
        android:src="@drawable/location" />
</AbsoluteLayout>

У меня есть эта настройка в моем файле Java: iv = (ImageView) findViewById (R.id.imgLocation);

но сейчас я не могу найти какие-либо методы, которые позволили бы мне установить координаты x и y.

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

AbsoluteLayout амортизируется, и его использование настоятельно не рекомендуется.Вы должны переключиться на использование какой-либо другой формы ViewGroup, например RelativeLayout.

Как только вы используете RelativeLayout, вы можете использовать класс RelativeLayout.LayoutParams, чтобы указать размер и положение дочернего элемента (а также различные другие параметры) при добавлении его к родителю RelativeLayout.

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,200); // The desired size of the child
params.setMargins(50,50); // Position at 50,50
mRelativeLayout.addView( mViewToAdd, params);     
0 голосов
/ 03 декабря 2011

Вот как вы можете установить координаты x и y ваших ImageView внутри AbsoluteLayout:

private void setLocation(int x, int y) {
    final ImageView iv = (ImageView) findViewById(R.id.imgLocation);
    final AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) iv.getLayoutParams();
    lp.x = x;
    lp.y = y;
    iv.setLayoutParams(lp);
}

Я согласен с Тревором, хотя вы можете по возможности избегать использования AbsoluteLayout, посколькуэто устарело.

...