0

我正在创建一个在屏幕上随机移动图像按钮的 Android 应用程序。我很困惑哪种布局可以提供帮助。绝对布局曾经有 x 和 y 轴,但现在已弃用。我尝试过使用 relative,但它也不起作用。我想生成随机 nos 将其放入 x、y 位置,以便我的按钮继续移动。

这是我所做的:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    submit = (Button)findViewById(R.id.submit1);
    submit.setOnClickListener(this);
   machar = (ImageButton)findViewById(R.id.machar);
    ed=(EditText)findViewById(R.id.eT1);
    tb=(ToggleButton)findViewById(R.id.tb1);
    tb.setOnClickListener(this);
  RelativeLayout r1 =(RelativeLayout)findViewById(R.id.l1);

    LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    params.leftMargin=10;
    params.rightMargin=20;
    params.topMargin=30;
    params.bottomMargin=40;
    r1.setLayoutParams(params);
    r1.addView(machar);

}

machar是图像按钮。此代码不起作用,XML 文件包含一个名为 l1 的相对布局标记,其中包含一个名为 machar 的图像按钮。我做错了什么?

4

3 回答 3

0

我认为您的问题可能是您正在尝试添加已添加的视图。ImageButton machar 已经在 xml 中声明,因此当您调用setContentView.

我建议以编程方式创建 ImageButton machar - 也就是说,不在您的 xml 布局中声明它,而是在您的onCreate方法中创建它。

于 2012-01-03T08:28:10.257 回答
0

修改一些保证金后,您需要调用requestLayout()

public void requestLayout()

当某些事情发生变化而导致该视图的布局无效时调用它。这将安排视图树的布局传递。

你必须调用requestLayout()你的 View 元素,如果没有RelativeRule超过set元素,margin 将控制RelativeLayout.

于 2012-02-07T15:01:54.030 回答
0

正如您所发现的,相对布局中没有绝对位置。您可以随机更改machar 的margin right 和margin top 以移动您的ImageButton。

于 2012-01-03T06:13:57.893 回答