java - 约束集不起作用
问题描述
我的问题是,我有一个约束集,它不起作用。我已经尝试了很多,但没有任何效果......按钮和文本在左侧,文本在按钮后面。
我希望按钮位于灰色框的右侧,文本位于左上方。这可能只用代码吗?
package com.example.sbt_local.ticketui;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.support.constraint.ConstraintSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class MainActivity extends Activity {
private LinearLayout lLayout;
private ConstraintLayout cLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context = this;
lLayout = new LinearLayout(context.getApplicationContext());
lLayout.setOrientation(LinearLayout.VERTICAL);
cLayout = new ConstraintLayout(context.getApplicationContext());
cLayout.setBackgroundColor(Color.parseColor("#FFEDEDED"));
cLayout.setPadding(4,4,4,4);
cLayout.setId(View.generateViewId());
ConstraintSet set = new ConstraintSet();
set.clone(cLayout);
Button cButton = new Button(context.getApplicationContext());
cButton.setText(">");
cButton.setLayoutParams(new RelativeLayout.LayoutParams(135, ViewGroup.LayoutParams.MATCH_PARENT));
cButton.setId(View.generateViewId());
set.connect(cButton.getId(),ConstraintSet.RIGHT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0);
set.constrainHeight(cButton.getId(), 200);
set.applyTo(cLayout);
TextView tv_startDate = new TextView(context.getApplicationContext());
DateFormat df = new SimpleDateFormat("HH:mm dd.MM.yyyy");
tv_startDate.setText("Test");
tv_startDate.setId(View.generateViewId());
// Constraint Set
System.out.println("Layout ID: " + cLayout.getId());
System.out.println("Button ID: " + cButton.getId());
// Add Elements to Layout
cLayout.addView(cButton);
cLayout.addView(tv_startDate);
// Add Ticket to Layout List
TextView spacer = new TextView(context.getApplicationContext());
spacer.setTextSize(4); // Spacer Size
lLayout.addView(cLayout);
lLayout.addView(spacer);
LinearLayout llLayout = (LinearLayout) findViewById(R.id.layout);
llLayout.addView(lLayout);
}
}
解决方案
把这一行:
set.applyTo(cLayout);
cButton
加入后cLayout
:
cLayout.addView(cButton);
cLayout.addView(tv_startDate);
set.applyTo(cLayout);
因为之前cButton
已经添加到cLayout
中,所以它ConstraintSet.PARENT_ID
是未定义的。
推荐阅读
- c - C如何对'='左侧进行算术运算?
- reactjs - 谷歌地图反应,来自 onGoogleApiLoaded apiIsLoaded 没有调用
- c# - MaxRequestSize 属性不停止请求 aspnet dotnet core 3
- javascript - 期望在箭头函数一致返回的末尾返回一个值
- javascript - 我如何在 AngularJS 中分离逻辑?
- django - 我们如何在基于 django 类的视图中实现自定义验证(创建和更新视图)
- javascript - 生产构建自定义选项。Vue-cli 3
- javascript - 格式化和提取 JSON
- java - 运行 docker 容器时从 ProcessBuilder 获取错误
- java - 如何在 JNI 代码中获取资源路径?