Ho avuto problemi con lo AppBarLayout
/Toolbar
/CoordinatorView
. Vuoi lo per scorrere su scroll, e tornare immediatamente a scorrere verso il basso (come la maggior parte delle app di lettura, anche g + è un esempio). Tuttavia, questo è quello che sto ricevendo:Barra degli strumenti in cima a Appbar - CoordinatorLayout
normale:
Un piccolo libro:
completa di scorrimento:
Questo è il mio codice:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="main.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/id_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/id_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
android:title="Hello World"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/main__activitycontent"/>
</android.support.design.widget.CoordinatorLayout>
main__activitycontent
:
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="main.MainActivity"
tools:showIn="@layout/main__activity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin"
android:text="@string/large_text"/>
</android.support.v4.widget.NestedScrollView>
Ho letto un sacco di post di blog, ma nessuno di loro sembra configurazioni lavora per me. Il hide su scroll up/show su scroll down funziona bene, solo lo Toolbar
si sposta sulla appbar. Controllo della gerarchia di visualizzazione Android Vedo che il numero Toolbar
si trova sopra la barra delle applicazioni blu scuro e si spostano insieme.
EDIT 1
Rimozione del fitsSytemWindows=true
dal CoordinatorLayout
conduce al comportamento previsto, ma l'appbar diventa bianca, non importa il colore bg per il CoordinatorLayout
:
La mia ipotesi è che il comportamento in realtà non è cambiato, quello che è successo è che non copre più la barra delle applicazioni, quindi la barra degli strumenti non va su di essa.
EDIT 2
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
</resources>
EDIT 3
package main;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.ee.oef.refactor.R;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main__activity);
Toolbar toolbar = (Toolbar) findViewById(R.id.main__toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main__menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
provare a rimuovere 'android: fitsSystemWindows =" true "' sembra che la barra degli strumenti passi sotto la barra delle applicazioni di sistema perché si imposta questo –
Se rimuovo Android: fitsSystemWindows = "true" il comportamento funziona come previsto, ma l'appbar diventa bianco invece di colorPrimaryDark. Ho provato a cambiare il colore bg del CoordinatorLayout, ma rimane bianco. –
hai definito '- @ color/color_primary_dark
' nel tuo styles.xml in AppTheme? –