web-dev-qa-db-ja.com

Android ActionBarカスタムレイアウトスタイリング

私は始めたばかりですAndroid開発はIOSから来て、再び問題にぶつかりました。そして、1日試した後、私は人々に尋ねることに決めましたスタックオーバーフロー。

だから私の問題:

アプリがあり、アクションバー(デフォルトではシャーロックなし)に、1つのロゴと2行のテキストが必要です。そしてインターネットを介して、アクションバーのsetCustomViewを見つけます。そして、カスタムxmlが読み込まれますが、レイアウトを正しく取得できません。

だから私は最初にアクションバーを設定します:

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);
}

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>

しかし、結果は私が探していないものです:

Problem in an image

それで私は何を忘れている/間違っている/または私は何をすべきですか?

15
Msmit1993

ルートレイアウトを相対レイアウトに変更してみてください

<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

次の理由により、結果が得られません。

enter image description here

あなたはする必要があります:

  1. appCompatテーマを使用する場合

enter image description here

  1. アクティビティレイアウトに追加

enter image description here

  1. コードなどで。 onCreate()でツールバーを設定して、アクションバーを置き換えます。

enter image description here

2
ceph3us

また、LinearLayoutをルートとして使用し、Android:weightSumを追加して、3つの子ビューにlayout_weightを指定することもできます。

AndroidのAndroid:weightSumとは何ですか、またどのように機能しますか?

0
Clocker