您好我正在开发Android应用程序。我以编程方式创建视图。在我的布局中,我将相对布局作为根元素。我试图将margin设置为我的根相对布局。但我无法做到这一点。我试着这样做:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout relativeLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
rlp.setMargins(100,100,100,100);
relativeLayout.setLayoutParams(rlp);
relativeLayout.setBackgroundColor(getResources().getColor(R.color.colorAccent3));
setContentView(relativeLayout);
}
}
上面的代码为我的活动添加了相对布局。但不考虑利润率。需要一些帮助。谢谢。
答案 0 :(得分:1)
它不会像你尝试的那样工作,因为这就是框架的工作方式。根视图总是占用整个空间,没有边距。
你能做的是:
FrameLayout.LayoutParams
,在布局参数上设置边距,将布局参数设置为RelativeLayout,将RelativeLayout添加到FrameLayout并添加setContentView(frameLayout)
答案 1 :(得分:0)
LayoutParams
应该适用于不是父母本身的孩子。 Activity
的根视图不是RelativeLayout
。首先,如果你打印出findViewById(android.R.id.content).getClass().getName()
,你会发现根视图是android.support.v7.widget.ContentFrameLayout
,我认为(来自名称)是支持-v7上的FrameLayout
(AppcompatActivity
})。如果你看{4},你会发现它确实是FrameLayout
。我的想法是,我们应该尽量给我们的RelativeLayout
FrameLayout.LayoutParams
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
params.setMargins(left, top, right, bottom);
relativeLayout.setLayoutParams(params);