不曉得為什麼 Android Developer 裡提到的 Activity.inMultiWindow() 根本不能用
( https://developer.android.com/guide/topics/ui/multi-window.html )
下面提供真正可以用的方式
因為是 Android 7.0 才支援的功能,API/SDK 記得至少要 24
由於 isInMultiWindowMode() 屬於 Activity.java,
所以如果是在 Activity 裡 可以用 this.isInMultiWindowMode()
如果是像我要使用在
public class OOXXFragment extends Fragment{}裡
那就用 getActivity().isInMultiWindowMode()
但Android studio會冒出warning,加上目前7.0以上的手機還不普及,
所以外圍加上判斷SDK的條件來解決此問題
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (getActivity().isInMultiWindowMode()){
//做 multi-window要做的事
}
}
如果是要做來吃不同layout,記得把判斷式放在 onCreate() 或 onCreateView()
至於強制portrait或landscape好像真的如官方所說不能用,即使是在java code裡使用
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
一樣不行
但會偵測分割後的螢幕長寬來決定吃portrait或landscape的layout
(如果你兩個都有的話)
所以目前我只能很蠢的複製 portrait的layout,用另一個檔名命名,只要是 multi-window 就吃這個layout;
不過也有好處,微調一些參數也就不必怕影響原先正常的layout。
若有更好的方法,還請分享給我,謝謝。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (getActivity().isInMultiWindowMode()){
//做 multi-window要做的事
}
}
如果是要做來吃不同layout,記得把判斷式放在 onCreate() 或 onCreateView()
至於強制portrait或landscape好像真的如官方所說不能用,即使是在java code裡使用
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
一樣不行
但會偵測分割後的螢幕長寬來決定吃portrait或landscape的layout
(如果你兩個都有的話)
所以目前我只能很蠢的複製 portrait的layout,用另一個檔名命名,只要是 multi-window 就吃這個layout;
不過也有好處,微調一些參數也就不必怕影響原先正常的layout。
若有更好的方法,還請分享給我,謝謝。
請問要怎麼吃不同的layout呢
回覆刪除我一帶入程式就會crash
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view;
view = inflater.inflate(R.layout.confirm_lock_pattern, null);
if (getActivity().isInMultiWindowMode()){
//做 multi-window要做的事
view = inflater.inflate(R.layout.confirm_lock_pattern_multi, null);
}
return view;
}
Hi,bigdog:
刪除我當初是發現如果在 portrait 下 及 landscape 下你都放了一個名為 confirm_lock_pattern.xml時
原先全屏portrait時會吃 portrait 下 的 layout (confirm_lock_pattern.xml)
一但變成multi window, 即使還是以 portrait 拿著,卻因為長寬比變了,所以會自動拿 landscape 的 layout 來 fit (吃 landscape下的 confirm_lock_pattern.xml)
至於crash 要看一下log,是否不能重覆對 view inflate? 謝謝。