/ / Kann LayoutParams nicht auf Toolbar setzen - Android, appcompat

Kann LayoutParams nicht auf Toolbar setzen - Android, appcompat

Ich bekomme seltsame Ausnahme, wenn ich versuche, Layout-Parameter auf meine Symbolleiste zu setzen.

 java.lang.ClassCastException: android.support.v7.widget.Toolbar$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams

Ich möchte eine innere Ansicht auf der rechten Seite einer Toolbar platzieren, aber seit xml layout_gravity Eigentum funktioniert nicht gut (siehe Frage) Ich versuche es programmatisch zu machen.
Mein Code sieht so aus:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setLayoutParams(new Toolbar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.CENTER | Gravity.RIGHT));
setSupportActionBar(toolbar);

Wenn ich eine Instanz von LinearLayout.LayoutParams Als Layout-Parameter wird die Symbolleiste einfach ausgeblendet. Ich würde jede Hilfe schätzen

Antworten:

1 für die Antwort № 1

Die Ausnahme wird ausgelöst, weil Sie es versucht habenum die LayoutParams in eine Klasse umzuwandeln, die sie nicht erben, daher die Klasse Cast Exception. Um dies zu lösen, verwenden Sie die LinearLayout.LayoutParams und statt

 new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.CENTER | Gravity.RIGHT));

machen

// Toolbar height is 56dp as per material design guidelines

new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
56,
Gravity.CENTER | Gravity.RIGHT));

0 für die Antwort № 2

Stellen Sie eine bestimmte Höhe ein:

new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
80,
Gravity.CENTER | Gravity.RIGHT);

Oder füge Elemente zu deiner Toolbar hinzu, also ist es nicht leer und wrap_content hat eigentlich etwas zu verpacken.