問題タブ [windowinsets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - WindowInsets とは何ですか?
Android OS について学習しようとしていますが、Google I/O 2014 アプリを読んでいるときにWindowInsets
. 誰かがそれらが何であるかを説明できれば、それは大きな助けになるでしょう. ありがとうございました。
android - fitsSystemWindows on Fragment, Activity and DrawerLayout combination
Problem
The activity layout has a DrawerLayout
with a FrameLayout
as content to Fragment
and a LinearLayout
to be opened and closed by drawer. The fragment used on content has a FrameLayout
with fitsSystemWindows
flag and a Toolbar
.
If I insert the fragment at onCreate()
all occurs as expected, the FrameLayout
starts on position 0 and the Toolbar
starts below the statusbar. But outside the onCreate()
the same code fails, the fitsSystemWindows
not works with FrameLayout
.
An important point, I need the Toolbar
and fitsSystemWindows
flag on Fragment
and not on Activity
.
How to get the same behavior seen at onCreate()
moment?
Code
Main Activity
#xA;Main Layout
#xA;Fragment
#xA;Fragment layout:
#xA;Example
The LinearLayout
to be opened is in red. The FrameLayout
with the fitsSystemWindows
flag is in green and the toolbar is in blue, the cyan view is working all the time, it need start at y position 0. The expected is Green and blue like the first time, but in the second time the blue is the unique viewed.
android - ナビゲーション バーとステータス バーのないコンテンツ領域を決定する
Android アプリは、ナビゲーション バー、ステータス バー、およびツールバーの背後にコンテンツを表示する全画面表示を使用します。これらのバーの後ろにないコンテンツが欲しいです。これらのバーのない領域を決定する方法は? 私の理解では、一部のバーの位置はデバイスに依存しています。
android - API 21 以降の場合、コンテンツはソフト ナビゲーション バーの後ろに表示されます
Material Design を使用するようにアプリをアップグレードしました - Theme.AppCompat.Light.NoActionBar、ActionBarの代わりにToolbarなど。
そして、問題があります。APi >= 21 のデバイスでは、下部のコンテンツがソフト NavigationBar (下の図を参照) の下に隠されるようになります。
これを修正する解決策を見つけました:
values-v21/styles.xml内
オプションの場合<item name="android:windowDrawsSystemBarBackgrounds">false</item>
- 下部のコンテンツは表示されますが、ステータスバーは完全に黒くなります。色をcolorPrimaryDark (私の場合は緑) に変更できません
オプションの場合<item name="android:windowDrawsSystemBarBackgrounds">true</item>
- 下部のコンテンツは非表示になり、ステータスバーは予想どおり緑色になります。
ステータスバーに色付け(緑)し、下部のコンテンツを表示したい..おそらく、ツールバーに問題があります。コンテンツを押し下げていますか?
助言がありますか?
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
アップデート:
@azizbekian が提案したように、fragmets のコンテナーを CoordinatorLayout(FrameLayout の前) に置き換えて適用しandroid:fitsSystemWindows="true"
ました。この場合、下部パネルは表示されますが、下部には表示されません。
画面のレイアウト:
結果は次のとおりです。
更新#2
アクティビティのレイアウト:
アクティビティのルートとして置き換えられLinearLayour
ます。CoordinatorLayout
私が保持しているコンテンツのルート要素としてFrameLayout
. に適用android:fitsSystemWindows="true"
されCoordinatorLayout
ます。このようにして、すべてのコンテンツがわずかに上に移動し、一部がツールバーの下に配置されました (下の画像で確認できます - 上部の要素は + と - の記号が付いた円です。ただし、前の画像では上部にテキストがあります。) 下部の要素について (ボタン パネル) - ナビゲーション バーの下に配置されていますが、わずかに上に移動しています。android:background="@color/red"
このパネルの位置がわかりやすいように印をつけました。
どうやら、私たちは正しい道を進んでいるようです。必要なのは - 問題を解決するために - コンテンツがツールバーの下に移動した理由.. ツールバーが上部の UI 要素になる場合、ボタンが表示されます..