我正在尝试将其他按钮上的按钮精确地添加到具有相同宽度和高度的相同位置。
我想我可以像这些代码那样做,
public class MainActivity extends AppCompatActivity {
Button b1;
LinearLayout root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
root = (LinearLayout)findViewById(R.id.activity_main);
b1 = (Button)findViewById(R.id.b1);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
ViewGroup.LayoutParams size = new ViewGroup.LayoutParams(b1.getWidth(),b1.getHeight());
int[] locations = new int[2];
b1.getLocationInWindow(locations);
Button a = new Button(this);
a.setLayoutParams(size);
a.setText("new Button");
a.setX(locations[0]);
a.setY(locations[1]);
root.addView(a);
}
}
和XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="semo.msoft.myapplication.MainActivity">
<Button
android:id="@+id/b1"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="50dp"/>
</LinearLayout>
但是,结果是这样的,
我认为它应该是正确的但似乎是错误的,新按钮的宽度和高度稍微小一些。另外,新按钮的位置完全错误..我不知道为什么,有人知道这个,请帮忙
答案 0 :(得分:0)
以下代码在我的机器上完美运行。我基本上只是改变了你设置root
的方式:
<FrameLayout>
PS:您需要将LinearLayout
更改为{{1}}。 {{1}}只是处理重叠的视图。