java - 以编程方式设置新的 View 边距

标签 java android layout view margin

我有一个在 XML 布局中创建的 FrameView,在我的代码中,我尝试创建一系列新的 ImageView 并将它们添加为该 FrameView 的子级。 ImageView 很小,只有大约 15 像素的正方形,我希望它们显示在 FrameView 周围的各个位置(我正在尝试实现看起来像雷达屏幕的东西)。我能够创建它们并添加它们,然后它们就会显示在屏幕上。然而,当我尝试设置它们的边距时,它似乎没有任何效果。无论我设置什么,所有 ImageView 都会显示在 FrameView 的左上角,而不是偏移适当的边距。下面列出了我的 XML 布局以及生成 subview 的代码。难道我做错了什么?如何才能正确显示边距?或者有没有比使用边距更好的方法来做到这一点。

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);
}

最佳答案

如果不指定 View 重力,FrameLayout 不会考虑边距参数。尝试为所有 ImageView 指定重力。

呵呵!

关于java - 以编程方式设置新的 View 边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640555/

相关文章:

java - 创建不同的类,一个CarDemo类和一个Car类

java - 计算跨航迹距离(线段与球面上点之间的距离)时出现负结果

html - 导航栏一直隐藏它下面的内容

java - 单元测试Java中单例类的线程安全性?

java - Java 中的 System.out.println() 与\n

android - 以编程方式从android中的图库重命名/删除音频文件

java - 下载zip文件后如何提示 "open with"菜单

android - 如何在android中单屏播放多个视频?

android - 在哪里放置不同大小的图标?

java - 使用自定义 IsPrime 方法查找素数