Java 设置新视图';按程序分配利润

Java 设置新视图';按程序分配利润,java,android,layout,view,margin,Java,Android,Layout,View,Margin,我有一个在XML布局中创建的框架视图,在我的代码中,我试图创建一系列新的ImageView,并将它们作为这个框架视图的子项添加。图像视图很小,只有大约15个像素的正方形,我希望它们显示在帧视图周围的不同位置(我正在尝试实现看起来像雷达屏幕的东西)。我可以很好地创建和添加它们,它们会显示在屏幕上。然而,当我试图设定他们的利润率时,似乎没有任何效果。无论我设置了什么,所有的图像视图都显示在框架视图的左上角,而不是偏移适当的边距。下面列出了我的XML布局以及生成子视图的代码。我做错什么了吗?我怎样才能

我有一个在XML布局中创建的框架视图,在我的代码中,我试图创建一系列新的ImageView,并将它们作为这个框架视图的子项添加。图像视图很小,只有大约15个像素的正方形,我希望它们显示在帧视图周围的不同位置(我正在尝试实现看起来像雷达屏幕的东西)。我可以很好地创建和添加它们,它们会显示在屏幕上。然而,当我试图设定他们的利润率时,似乎没有任何效果。无论我设置了什么,所有的图像视图都显示在框架视图的左上角,而不是偏移适当的边距。下面列出了我的XML布局以及生成子视图的代码。我做错什么了吗?我怎样才能使利润率正确地显示出来?或者,有没有比使用利润率更好的方法呢

XML:


爪哇:

for(int i=0;i<>代码>如果不指定视图重力,FrAMELayOUT不考虑边距参数。尝试为所有图像视图指定重力


> FrAMELayOUT如果不指定视图重力,则不考虑边缘参数。尝试为所有图像视图指定重力


嗯,好的。我只是依赖于LEFT&TOP的默认重力,但我会给它们显式的重力值。谢谢好的,那就行了,谢谢你的回答!我只需要将“android:layout\u gravity”属性添加到FrameLayout的子级(或者,在代码中,设置FrameLayout.LayoutParams类的gravity成员)嗯,好的。我只是依赖于LEFT&TOP的默认重力,但我会给它们显式的重力值。谢谢好的,那就行了,谢谢你的回答!我只需要将“android:layout_gravity”属性添加到FrameLayout的子级(或者,在代码中,设置FrameLayout.LayoutParams类的gravity成员)
<?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);
}