gpt4 book ai didi

java - 以编程方式在RelativeLayout中设置 View 边距没有任何影响

转载 作者:行者123 更新时间:2023-12-02 13:32:50 27 4
gpt4 key购买 nike

在 Android 中,我在 Java 代码中创建一个 ImageView 并设置其布局参数:宽度、高度和上边距,然后将其添加到主布局 (RelativeLayout)。宽度和高度已成功应用,但边距对 ImageView 位置没有任何影响。实际上边距保持为 0。

如何将上边距应用于 View ?代码如下。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initClouds();
}

private void initClouds() {
addCloud(R.drawable.cloud1, R.dimen.cloud1_top_margin);
addCloud(R.drawable.cloud2, R.dimen.cloud2_top_margin);
}

private void addCloud(int imageResId, int topMarginResId) {
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);

ImageView cloud = new ImageView(this);
int height = (int) getResources().getDimension(R.dimen.cloud_height);
int width = (int) getResources().getDimension(R.dimen.cloud_width);
ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(width, height);
params.topMargin = (int) getResources().getDimension(topMarginResId);
cloud.setImageResource(imageResId);
mainLayout.addView(cloud, params);
}
}

最佳答案

要设置RelativeLayout内 View 的边距,您应该使用RelativeLayout.LayoutParams。像这样更改您的代码,

private void addCloud(int imageResId, int topMarginResId) {
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);

ImageView cloud = new ImageView(this);
int height = (int) getResources().getDimension(R.dimen.cloud_height);
int width = (int) getResources().getDimension(R.dimen.cloud_width);
RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(width, height);
param.topMargin = (int) getResources().getDimension(topMarginResId);

cloud.setImageResource(imageResId);
mainLayout.addView(cloud, param);
}

关于java - 以编程方式在RelativeLayout中设置 View 边距没有任何影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43134087/

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