Android Lutscher, AppCompat ActionBar benutzerdefinierte Ansicht nicht nehmen gesamte Bildschirmbreite

? steve_the_kid @ | Original: StackOverFlow
---

Also, ich meine Codebasis aktualisiert, um Lutscher, und ich habe Probleme mit der Aktionsleiste . Ich bin mit AppCompat und ActionBarActivity und Aufblasen eine benutzerdefinierte Ansicht . Es scheint, dass die benutzerdefinierte Ansicht nimmt nicht mehr die ganze Breite des Bildschirms, so dass ein dünner Streifen auf der linken Seite

Android Lutscher, AppCompat ActionBar benutzerdefinierte Ansicht nicht nehmen gesamte Bildschirmbreite Wie früher aussehen

Android Lutscher, AppCompat ActionBar benutzerdefinierte Ansicht nicht nehmen gesamte Bildschirmbreite So wie es jetzt aussieht

Dies ist der Code Ich verwende zum Einrichten der Aktionsleiste . Wer irgendwelche Ideen ?

final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
    actionBar.setBackgroundDrawable(null);
    // actionBar.setStackedBackgroundDrawable(null);
    TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
    title.setText(R.string.youtube);
    ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
    back.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
}

Edit

Herausnehmen der benutzerdefinierten Ansicht und Ändern der Hintergrund jetzt nimmt die ganze Breite . Also die Frage ist, wie können wir ein Custom nehmen die gesamte Breite des ActionBar ?

---

Top 5 Antwort

1Muzikant @

Sieht aus, als dies durch die jüngsten Änderungen an der ActionBar in der jüngsten appcompat-v7 Update verursacht . Es scheint so, dass es erhebliche Änderungen an, wie Sie sollten Aktionsleisten zu behandeln.

Ich vor dem gleichen Problem, und nach dem Lesen der http://developer.android.com/reference/android/support/v7/app/ActionBar.html, und vor allem das folgende Zitat Ich fand eine Lösung .

Beginnend mit Android L ( API-Ebene 21) kann der Aktionsleiste von einem Toolbar -Widget in der Anwendung das Layout dargestellt werden . Der Antrag kann an die Aktivität, die Toolbar als Aktionsleiste der Aktivität der behandelt werden zu signalisieren. Aktivitäten, die diese Funktion verwenden, sollten Sie eine der mitgelieferten .NoActionBar Themen verwenden, stellen Sie den windowActionBar Attribut auf falsche oder anderweitig das Fenster -Funktion nicht verfügbar.

Die Art, wie ich es sehe, wurden die ActionBar Themen geändert und auf der einen Seite schien, ein paar Dinge zu brechen, sondern bieten viel mehr Flexibilität auf der anderen. Ich empfehle die folgenden Schritte aus:

Use AppCompat style in your activity as described in the above quote Add a .NoActionBar to your Activity layout Set the android.support.v7.widget.Toolbar attribute. This is the main issue with the margin that you describe in your question
app:contentInsetStart="0dp"

Es ist in der Regel empfohlen, dass Sie das tun, in einem separaten Layoutdatei und verwenden Sie <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/actionBar" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentInsetEnd="0dp" app:contentInsetStart="0dp" > </android.support.v7.widget.Toolbar> in Ihrer Tätigkeit Layout, so dass Sie brauchen nur die Werkzeugleiste an einem Ort anpassen, wenn in mehreren Tätigkeit

include
Use <include layout="@layout/view_action_bar" /> and findViewById in your Activity setSupportActionBar to onCreate
signal to the Activity which Toolbar should be treated as the Activity's action bar
Once you do that, all actions added in Toolbar actionBar = (Toolbar) findViewById(R.id.actionBar); setSupportActionBar(actionBar); will be added to the toolbar and it will be treated as the activity action bar. Further customize the Toolbar as desired (Add child views etc.) 2Gian Darren Azriel Aquino @

Ich glaube, Sie können tun, dass es in verschiedenen Schnitten . versuchen Sie dies . getestet auf kitkat

onCreateOptionsMenu
3LeoLink @

Ich habe dieses Problem auch heute, dann fand ich heraus, ich hatte <style name="AppTheme" parent="Theme.AppCompat"> <item name="toolbarStyle">@style/AppThemeToolbar</item> </style> <style name="AppThemeToolbar" parent="Widget.AppCompat.Toolbar" > <item name="contentInsetStart">0dp</item> </style> in meinem Projekt, das von Android Studio automatisch generiert wurde, und das ist die Ursache festgestellt.

Why?

Da mein res/values-v21/styles.xml 's Inhalt war:

res/values-v21/styles.xml

Und meine <?xml version="1.0" encoding="utf-8"?> <resources> <style name="BaseAppTheme" parent="android:Theme.Material.Light"> </style> </resources> enthalten so etwas wie:

res/values/styles.xml

Dann, wenn ich meine Anwendung auf Lollipop lief die <style name="BaseAppTheme" parent="android:Theme.Holo.Light"> <!-- Customize your theme here. --> <item name="android:windowContentOverlay">@null</item> <item name="android:soundEffectsEnabled">false</item> </style> verwendet wurde, und das genaue Problem, das OP hatte verursacht . So kam ich auf eine einfache Lösung ist einfach zu löschen :

res/values-v21/styles.xml

in <style name="BaseAppTheme" parent="android:Theme.Material.Light"> </style>