Posted at

Toolbarが急に消える

More than 1 year has passed since last update.

再現環境 : 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以下だけかも。