0

我在约束布局的上方添加了约束布局,并且在其内部有一个按钮,当我点击它时,它应该使约束布局和按钮消失 并且这是代码防止旋转后出现视图

Button button11 = (Button) findViewById(R.id.button11); 
     final ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.constraint_layout_inside); 
     button11.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       constraintLayout.setVisibility(View.INVISIBLE); 
} 

当我旋转屏幕约束布局再次出现时的问题 如何防止?

+0

见[处理配置的变化(https://developer.android.com/guide/topics/resources /runtime-changes.html) – santalu

回答

-1

此方法添加到您的活动

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     setContentView(R.layout.lanscape_activity); 
     // your own layout 

    } else { 
     setContentView(R.layout.portrait_activity); 
     // your own layout 
    } 
} 

而且这条线在你的清单

android:configChanges="orientation|keyboardHidden|screenSize" 
+0

抱歉,但它不起作用 – khaleader

1

它可以因为活动被破坏和方向更改后创建不能自动处理。因此,你必须自己处理它。

保存当前状态在onSaveInstanceState()

 

    override fun onSaveInstanceState(outState: Bundle?) { 
     super.onSaveInstanceState(outState) 
     outState.putBoolean("someKey", constraintLayout.visibility == View.VISIBLE)   
    } 
 

然后,在onCreate()

 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 

     // Initialize views 
     ... 

     // if `savedInstanceState` is not null, then look for `someKey` in bundle 
     savedInstanceState?.run { 
      val isVisible = getBoolean("someKey") 
      constraintLayout.visibility = if (isVisible) View.VISIBLE else View.INVISIBLE 
     } 

     if (null == savedInstanceState) { 
      // This activity is starting for the first time, 
      // not an orientation change case 
     } 
    }