2017-05-02 12 views
-2

ActionBar(App Bar)に関してdocumentationthisと書いてあります。それは述べて:その最も基本的な形態においてツールバーからActionBarアイテムを削除する

を、アクションバーは、一方の側の 活動のタイトルと他のオーバーフローメニュー( 3-点線のフライアウトメニュー)が表示されます。

さまざまなAndroidリリースで、ネイティブActionBar にアプリバーの機能が徐々に追加されています。その結果、ネイティブActionBar は、 デバイスが使用している可能性のあるAndroidシステムのバージョンによって、動作が異なります。 これとは対照的に、最新の機能はサポートライブラリのバージョンに と追加されています。 このため、 は、サポートライブラリのツールバークラスを使用して アクティビティのアプリバーを実装する必要があります。

したがって、基本的には、AppbarをカスタマイズするときにActionbarではなくToolbarを使用するように指示しています。私はアドバイスに耳を傾けると、ツールバーを追加します。

build.gradle(モジュール:アプリ)ファイル:

dependencies { 
    ... 
    compile 'com.android.support:appcompat-v7:25.2.0' 
} 

RES /のstyles.xml:

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    </style> 
</resources> 

がactivity_main.xml:

<RelativeLayout ... android:fitsSystemWindows="true" > 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:minHeight="?attr/actionBarSize" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary"> 
     <ImageView android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/yourStory" android:src="@drawable/ic_face_black_24dp" /> 
    </android.support.v7.widget.Toolbar> 

オーバーフローメニューが表示されるため、ツールバーにアクションバーが焼き付けられているようです私はツールバーで指定していませんでした。また、私の申請書のタイトルが残っています。ツールバー内の画像が正しく表示されます。私は彼らが表示されるようにするためにメニュー項目を膨らまなかったことに注意する

今では重要です:

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_menu, menu); 
    return true; 
} 

、メニュー/ main_menu.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> 
    <item android:id="@+id/camera" android:title="Camera" 
      app:showAsAction="always"/> 
    <item android:id="@+id/logo" android:title="Logo" 
      app:showAsAction="always"/> 
    <item android:id="@+id/profile" android:title="Profile" 
      app:showAsAction="always"/> 
</menu> 

私が出た場合それらのアイテムを取り除くと、フライアウトメニューが消えます。つまり、ActionBarはツールバーに統合されているようです。しかし、私はどのようにツールバーのタイトルを取り除くのですか?私はどこから来ているのか分かりません。私の最終的な目標は、Instagramに似たツールバーを作成することです。左にはカメラのアイコンがあり、中央にはロゴが表示され、右には別のアイコンが表示されます。

+0

あなた 'Toolbar'の'のsetTitleを( "") '呼び出してみましたか?ところで、あなたはInstagramが 'Toolbar'を使っていると思いますか? – CommonsWare

+0

@CommonsWare私はそれを理解し、以下の回答を掲載しました。 Androidのドキュメントでは、ActionBar、ToolBar、App Barなどの用語をとてもゆっくりと投げ込み、初心者にはすべての概念を理解するのが難しいため、この質問はまだ開いています。私はついにそれをすべて理解し、うまくいけばそれは他の人に利益をもたらす。 – Donato

+0

@CommonsWareとInstagramは他に何を使用していますか?私はホームページの画面について話しています。それは、左にカメラのアイコン、中央にロゴ、右に別のアイコンを持っています。なぜあなたはそれを達成するために何か他のものが必要でしょうか? – Donato

答えて

0

:書き込みのコードの行以下

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="#fff"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ImageView 
      android:id="@+id/camera" 
      android:layout_width="48dp" 
      android:layout_height="match_parent" 
      android:layout_alignParentLeft="true" 
      android:padding="8dp" 
      android:clickable="true" 
      android:src="@drawable/ic_camera"/> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/camera" 
      android:layout_toLeftOf="@id/send" 
      android:paddingTop="4dp" 
      android:paddingBottom="4dp" 
      android:src="@drawable/Instagram_logo"/> 

     <ImageView 
      android:id="@+id/send" 
      android:layout_width="48dp" 
      android:layout_height="match_parent" 
      android:layout_alignParentRight="true" 
      android:padding="8dp" 
      android:clickable="true" 
      android:src="@drawable/ic_send"/> 
    </RelativeLayout> 

</android.support.v7.widget.Toolbar> 

をその統合が発生したら、そして、あなたはそうと、ツールバー上のアクションバーのメソッドを呼び出して開始することができますactivityクラスを使用して、デフォルトのツールバーtitleを非表示にし、camerasendのイベントを処理するclickオプション:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
getSupportActionBar().setTitle(""); 
getSupportActionBar().setDisplayHomeAsUpEnabled(false); 

ImageView imageCamera = (ImageView) toolBar.findViewById(R.id.camera); 
ImageView imageSend = (ImageView) toolBar.findViewById(R.id.send); 

imageCamera.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Do something 
    } 
}); 

imageSend.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Do something 
    } 
}); 

はOUTPUT:

enter image description here

+0

@Donato私の答えが役に立つと思われる場合は、アップを投票してください。前もって感謝します :) – FAT

0

[OK]を、私は問題にいくつかの明確さを発見した。 ActionBarをToolBarに統合するコード行があり、setSuppertActionBarです。あなたは以下のようにあなたのToolbarをカスタマイズすることができます

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
// Sets the Toolbar to act as the ActionBar for this Activity window. 
setSupportActionBar(toolbar); 
// We do not want to display title, which is a default for the ActionBar 
getSupportActionBar().setDisplayShowTitleEnabled(false); 
関連する問題