java - 使用 ConstraintSet 设置视图
问题描述
我的 ConstraintSet 属性有问题,我完成了约束布局,我希望它通过代码更改一些约束,但是当我创建新的 ConstraintLayout 并将上下文设置为“this”然后 setContentView(myLayout) 它是一个空白空间。如何让它显示我之前制作的布局?
onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConstraintLayout myLayout = new ConstraintLayout(this);
setContentView(myLayout);
setContentView(R.layout.activity_gr);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
解决方案
如果您只想膨胀您在 xml 中创建的约束布局,通常只需执行以下操作:
setContentView(R.layout.activity_gr);
没有别的。
如果您想以编程方式处理 ConstraintSets 和其他东西,可以这样做:
ConstraintLayout myLayout = new ConstraintLayout(this);
ConstraintSet constraints = new ConstraintSet();
constraints.clone(context, R.layout.activity_gr);
myLayout.setConstraintSet(constraints);
setContentView(myLayout);
在clone()
-call 的引擎盖下,布局被夸大了。请记住,这只保留布局的约束部分。
然后您可以以编程方式添加约束,例如:
constraints.connect(R.id.some_id, TOP, R.id.some_other_id, BOTTOM)
如果我正确地解释了您的问题,我认为您应该在 xml 中的 contraintLayout 上设置和标识,例如my_container
:
setContentView(R.layout.activity_gr);
ConstraintLayout layout = findViewById(R.id.my_container)
ConstraintSet constraints = new ConstraintSet();
constraints.clone(layout);
// Edit constraints of the constraints set
// Apply your new constraints to the inflated layout
constraints.applyTo(layout)
推荐阅读
- tensorflow - TensorFlow.js 无法在 Windows 10 中安装
- javascript - 为什么我无法从共享邮箱发送消息,即使删除了插件
- visual-studio-2015 - Visual Studio 2015 设计器不想显示表单 - 错误
- classification - 如何将数值类转换为 WEKA 中的因子?
- kubernetes - pod 网络错误
- java - 使用标志 CLEAR_TOP 时后台堆栈中的活动
- mongodb - 使用 Mongosheet 的 CRUD 操作
- facebook - Facebook Graph API -> 用户/事件返回空数组
- php - 我想从我的数据库中从一个 ID 号中选择多个具有相同 photo_id 的图像或变量
- python - 使用 Flask 从静态文件夹提供静态文件