У меня есть FrameView, созданный в моем макете XML, и в своем коде я пытаюсь создать серию новых ImageViews и добавить их в качестве дочерних элементов этого FrameView.ImageViews имеют небольшой размер, всего около 15 пикселей, и я хочу, чтобы они отображались в разных местах вокруг FrameView (я пытаюсь реализовать то, что выглядит как экран радара).Я могу создать их и добавить их просто отлично, и они появляются на экране.Однако, когда я пытаюсь установить их поля, это, похоже, не дает никакого эффекта.Независимо от того, что я установил, все ImageViews отображаются в верхнем левом углу FrameView, в отличие от смещения соответствующими полями.Мой XML-макет указан ниже вместе с кодом, который генерирует дочерние представления.Я делаю что-то неправильно?Как я могу заставить поля отображаться правильно?Или есть лучший способ сделать это, чем с помощью полей.
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RadarBackground"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/radar_bg">
<FrameLayout
android:id="@+id/RadarFrame"
android:layout_width="320dip"
android:layout_height="320dip"
android:layout_marginTop="25dip">
</FrameLayout>
</LinearLayout>
Java:
for (int i = 0; i < getData().getTargetCount(); i ++) {
int id = getData().getTargetId(i);
Log.d(T.TAG_A, "Radar: plotting target " + id);
TargetView tv = new TargetView(this, id, getData().getTargetName(id));
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.setMargins(
radarCenterX + (int) (getData().calcTargetRadarX(id, radarSize) / radarScale) - (targetSizeX / 2),
radarCenterY - (int) (getData().calcTargetRadarY(id, radarSize) / radarScale) - (targetSizeY / 2),
0, 0);
tv.setImageResource(R.drawable.radar_civilian);
tv.setOnClickListener(this);
mTargets.add(tv);
mFrame.addView(tv, lp);
}