webentwicklung-frage-antwort-db.com.de

Android ActionBar-Layout für benutzerdefiniertes Layout

Ich fange gerade mit der Android-Entwicklung an, die von IOS kommt und stolperte erneut über ein Problem. Und nach einem Versuchstag entschied ich, dass ich die Leute nach Stack-Überlauf fragen werde.

Also mein Problem:

Ich habe eine App und in der Aktionsleiste (standardmäßig kein Sherlock) möchte ich 1 Logo und 2 Textzeilen. Durch das Internet füge ich setCustomView für die Aktionsleiste hinzu. Und der Brauch xml ist geladen, aber ich kann das Layout nicht richtig einstellen.

Also erst mal die Aktionsleiste einrichten:

private void setupActionBar() {
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayUseLogoEnabled(false);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowHomeEnabled(false);

    LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    View customNav = LayoutInflater.from(this).inflate(R.layout.actionbar, null); // layout which contains your button.

    actionBar.setCustomView(customNav, lp1);
}

Als das xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_gravity="fill_horizontal"
    Android:orientation="horizontal"
    Android:background="@color/Blue">

    <TextView
        Android:id="@+id/text_left"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/title_menu"
        Android:textColor="@color/White"
        Android:paddingLeft="5dp"
        Android:layout_gravity="left"/>

    <ImageView
        Android:id="@+id/icon"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/Icon"
        Android:layout_gravity="center"/>

    <TextView
        Android:id="@+id/text_right"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/title_help"
        Android:layout_gravity="right"
        Android:textColor="@color/White"
        Android:paddingRight="5dp"/>

</LinearLayout>

Aber das Ergebnis ist etwas, wonach ich nicht suche:

Problem in an image

Also was vergesse ich/mache ich falsch/oder sollte ich das tun?

12
Msmit1993

versuchen Sie, das Stammlayout in ein relatives Layout zu ändern

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="fill_horizontal"
Android:orientation="horizontal">

<TextView
    Android:text="left text"
    Android:layout_toLeftOf="@+id/icon"
    Android:layout_alignParentLeft="true"
    Android:id="@+id/text_left"
    Android:gravity="left"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:paddingLeft="5dp"/>

<ImageView
    Android:layout_centerHorizontal="true"
    Android:id="@+id/icon"
    Android:layout_width="10dp"
    Android:layout_height="wrap_content"
    Android:src="@drawable/bg_sunrise"
    Android:layout_gravity="center"/>

<TextView
    Android:text="Right txt"
    Android:layout_toRightOf="@+id/icon"
    Android:id="@+id/text_right"
    Android:layout_width="match_parent"
    Android:gravity="right"
    Android:layout_height="wrap_content"
    Android:layout_gravity="right"
    Android:paddingRight="5dp"/> </RelativeLayout>
14
Fahriyal Afif

sie erhalten Ihr Ergebnis nicht, weil:

enter image description here

sie müssen: 

  1. wenn Sie das AppCompat-Design verwenden 

enter image description here

  1. fügen Sie Ihrem Aktivitätslayout hinzu 

enter image description here

  1. im Code zB. Legen Sie in onCreate () eine Symbolleiste zum Ersetzen der Aktionsleiste fest.

enter image description here

2
ceph3us

Sie können LinearLayout auch als Root verwenden und Android: weightSum hinzufügen und eine layout_weight für die drei untergeordneten Ansichten angeben. 

Was ist Android: weightSum in Android und wie funktioniert es?

0
Clocker