gpt4 book ai didi

java - 如何复制以编程方式添加 subview 的布局?

转载 作者:行者123 更新时间:2023-11-29 05:07:36 25 4
gpt4 key购买 nike

我的 MainActivity 设置为水平方向,它包括 2 个 Framelayout。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1"
tools:context="com.example.helloandroid.MainActivity" >

<FrameLayout
android:id="@+id/framelayout1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.5" >
</FrameLayout>

<FrameLayout
android:id="@+id/framelayout2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.5" >
</FrameLayout>

</LinearLayout>

从 MainActivity.java 中,frameLayout1 以编程方式添加一些按钮,这些按钮的位置由以下代码随机设置:

private void addNumbers(){ // Numbers is set with random position

for (int i = 1; i < 3; i++) {
Button btn = new Button(this);
btn.setText("" + i);
btn.setId(i);

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(50, 50);
int leftMargin = new Random().nextInt(widthScreen/2 - btnSize );
int topMargin = new Random().nextInt(heightScreen - btnSize);
lp.leftMargin = leftMargin;
lp.topMargin = topMargin;

btn.setLayoutParams(lp);
framelayout1.addView(btn);
//framelayout2.addView(btn);

}
}

我想让 framelayout2 与 framelayout1 具有相同的布局,如下图所示 enter image description here

那么,如何将 framelayout1 的布局复制到 framelayout2?以及如何识别按钮的 onclick 事件是在 framelayout1 还是 framelayout2 上?

最佳答案

尝试下面的示例代码,

private void addNumbers(){ // Numbers is set with random position
for (int i = 1; i < 3; i++) {
Button btn1 = new Button(this);
Button btn2 = new Button(this);
btn1.setOnClickListener(listener1);
btn2.setOnClickListener(listener2); // here using different listener
btn1.setText("" + i);
btn2.setText("" + i); //same text

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(50, 50);
int leftMargin = new Random().nextInt(widthScreen/2 - btnSize );
int topMargin = new Random().nextInt(heightScreen - btnSize);
lp.leftMargin = leftMargin;
lp.topMargin = topMargin;

btn1.setLayoutParams(lp);
btn2.setLayoutParams(lp); //same lp

framelayout1.addView(btn1);
framelayout2.addView(btn2);
}
}

关于java - 如何复制以编程方式添加 subview 的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29863192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com