LoginSignup
0
0

More than 5 years have passed since last update.

Toolbarが急に消える

Posted at

再現環境 : Nexus 5 (Android 6.0.1)

以下はどうも android.support.v7.widget.Toolbar バグっぽいです。
(Nougatの端末では再現せず)


EditTextに入力していたら、なぜかtoolbar部分が消えた。

EditTextを改行不可にする android:inputType="text"

app/src/main/res/layout/content_main.xml
<EditText android:layout_width="match_parent"
          android:layout_height="70dp"
          android:layout_marginLeft="16dp"
          android:layout_marginRight="16dp"
          android:inputType="text"/>

適当に EditText に文字を入力する(そのまま横に入力が進む)

image.png

ある程度進むと急に toolbar が上に巻き取られて消える。(スクロール時の動きと同じ感じ)
青いtoolbar部分が消えてしまう。

toolbarの指定はこんな感じ

app/src/main/res/layout/app_bar_main.xml
<android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

app:layout_scrollFlags="scroll|enterAlways" が悪さをしている模様。


指定を解除すれば発生しないが、recyclerViewなどでちゃんとスクロールしている箇所ではこのままが良い場合、以下のような感じで特定のviewでだけ指定解除できる。

app/src/main/java/com/example/mariko/drawercheckedittext/MainActivity.java
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);

kotlinだともっと簡潔

val params = toolbar.layoutParams as AppBarLayout.LayoutParams
params.scrollFlags = 0

参考 : https://stackoverflow.com/questions/30771156/how-to-set-applayout-scrollflags-for-toolbar-programmatically

どうも現象としては recyclerView などでスクロールさせている箇所以外だと発生してしまう。
ScrollViewで挟んでもダメっぽい。

ミニマルな再現コードは、AndroidStudioでCreate New Project > Navigation Drawer Activityで作ったプロジェクトで再現できた。 app:layout_scrollFlags="scroll|enterAlways" を追加するだけ。
Nougatの端末では再現できずだったので、Marshmallow以下だけかも。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0