在 Android Studio 中根据条件使约束布局不可见
Making Constraint Layout Invisible based on Condition in Android Studio
我正在使用一个条件,如果语句为真,它将使布局不可见或消失。
我有一个名为“courseLayout”的约束布局,我在 java 中调用此布局来执行此操作
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
然后在 if 语句中,我使用
constraintLayout1.setVisibility(View.INVISIBLE);
它不起作用,应用程序因这些行而崩溃。还有其他方法可以调用和操作约束布局吗?我究竟做错了什么?这是 Java 代码。 if 语句适用于除此约束布局之外的其他元素。
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day==Calendar.FRIDAY){
constraintLayout1.setVisibility(View.INVISIBLE);
}
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
您在 oncreate 方法之外初始化视图,这不是您需要在内部初始化视图的方式 onCreate()
这是正确答案:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day==Calendar.FRIDAY){
constraintLayout1.setVisibility(View.INVISIBLE);
尝试在 onCreate()
中使用 findViewById
ConstraintLayout constraintLayout1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day==Calendar.FRIDAY){
constraintLayout1.setVisibility(View.INVISIBLE);
}
}
顺便说一句,您忘记在 constraintLayout1.setVisibility 之后用 { } 结束条件语句(View.INVISIBLE);
我正在使用一个条件,如果语句为真,它将使布局不可见或消失。
我有一个名为“courseLayout”的约束布局,我在 java 中调用此布局来执行此操作
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
然后在 if 语句中,我使用
constraintLayout1.setVisibility(View.INVISIBLE);
它不起作用,应用程序因这些行而崩溃。还有其他方法可以调用和操作约束布局吗?我究竟做错了什么?这是 Java 代码。 if 语句适用于除此约束布局之外的其他元素。
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day==Calendar.FRIDAY){
constraintLayout1.setVisibility(View.INVISIBLE);
}
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
您在 oncreate 方法之外初始化视图,这不是您需要在内部初始化视图的方式 onCreate()
这是正确答案:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day==Calendar.FRIDAY){
constraintLayout1.setVisibility(View.INVISIBLE);
尝试在 onCreate()
中使用 findViewByIdConstraintLayout constraintLayout1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day==Calendar.FRIDAY){
constraintLayout1.setVisibility(View.INVISIBLE);
}
}
顺便说一句,您忘记在 constraintLayout1.setVisibility 之后用 { } 结束条件语句(View.INVISIBLE);