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