?onCreate中使用view.setX(380); view.setY(380);设置控件的位置,布局完成之后打印结果为:
onCreate中使用?layoutParams.topMargin = 380; layoutParams.leftMargin = 380;设置控件的位置,布局完成之后打印结果为:
测试代码如下
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
FrameLayout flContainer = findViewById(R.id.fl_container);
ImageView imageView = findViewById(R.id.image_view);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
// layoutParams.topMargin = 380;
// layoutParams.leftMargin = 380;
imageView.setLayoutParams(layoutParams);
imageView.setX(380);
imageView.setY(380);
flContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrameLayout.LayoutParams layoutParams1 = (FrameLayout.LayoutParams) imageView.getLayoutParams();
Log.e("xxxxxxx", "leftMargin:" + layoutParams1.leftMargin + "---topMargin:" + layoutParams1.topMargin);
Log.e("xxxxxxx", "getX:" + imageView.getX() + "---getY:" + imageView.getY());
}
});
}
public static void actionStart(Context context) {
Intent intent = new Intent(context, SecondActivity.class);
context.startActivity(intent);
}
}
结论:在设置控件位置时,推荐使用 layoutParams.topMargin,layoutParams.leftMargin,能避免一些布局及动画相关的坑。
|