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 
     } 
    }