我有一个在我的XML布局中创建的FrameView,在我的代码中,我正在尝试创建一系列新的ImageView并将它们添加为此FrameView的子项。 ImageViews很小,只有大约15像素的正方形,我希望它们显示在FrameView周围的各个位置(我正在尝试实现看起来像雷达屏幕)。我能够创建它们并将它们添加得很好,它们会出现在屏幕上。但是,当我尝试设置边距时,它似乎没有任何效果。无论我设置什么,所有的ImageView都显示在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>
爪哇:
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);
}
答案 0 :(得分:5)
如果未指定视图“重力”,则FrameLayout不会考虑边距参数。尝试为所有ImageView指定重力。
HTH!