2017-07-12 5 views
1

wie Logowie Logo zentriert auf AppBarLayout

i appbarlayout logo @ ziehbar/Logo in der Mitte hinzufügen möchten auf AppBarLayout zum Zentrum und Menü-Symbol hinzufügen (rtl ist true) wie Screenshot

aktuelle Layout Screenshot:

current screenshot

ich will dieses Layout, Screenshot:

i want this, screenshot

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 
<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="56dp" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     app:tabMode="fixed" 
     app:tabGravity="fill" 
     android:layoutDirection="rtl" 
     android:layout_height="wrap_content" /> 
</android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

</LinearLayout> 

MainActivity.java

package com.example; 

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.WindowManager; 


public class MainActivity extends AppCompatActivity { 
    public static MainActivity instance; 
    private HomeFragment homeFragment; 
    private ProfilesFragment profilesFragment; 
    private CategoriesFragment categoriesFragment; 
    private TabLayout allTabs; 
    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 
    private int[] tabIcons = { 
      R.drawable.home, 
      R.drawable.profiles, 
      R.drawable.categories 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     instance = this; 
     getAllWidgets(); 
     bindWidgetsWithAnEvent(); 
     setupTabLayout(); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     //getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     setupTabIcons(); 

     // screen turn on ever 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 


     // RTL Toolbar 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
      getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
     } 
    } 

    private void setupTabIcons() { 
     tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
     tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
     tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
    } 

    public static MainActivity getInstance() { 
     return instance; 
    } 

    private void getAllWidgets() { 
     allTabs = (TabLayout) findViewById(R.id.tabs); 
    } 

    private void setupTabLayout() { 
     homeFragment = new HomeFragment(); 
     profilesFragment = new ProfilesFragment(); 
     categoriesFragment = new CategoriesFragment(); 
     allTabs.addTab(allTabs.newTab().setText("خانه"), true); 
     allTabs.addTab(allTabs.newTab().setText("شخصیت\u200Cها")); 
     allTabs.addTab(allTabs.newTab().setText("دسته\u200Cبندی\u200Cها")); 
    } 

    private void bindWidgetsWithAnEvent() { 
     allTabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       setCurrentTabFragment(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 
      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
      } 
     }); 
    } 

    private void setCurrentTabFragment(int tabPosition) { 
     switch (tabPosition) { 
      case 0: 
       replaceFragment(homeFragment); 
       break; 
      case 1: 
       replaceFragment(profilesFragment); 
       break; 
      case 2: 
       replaceFragment(categoriesFragment); 
       break; 
     } 
    } 

    public void replaceFragment(Fragment fragment) { 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.replace(R.id.frame_container, fragment); 
     ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     ft.commit(); 
    } 


    @Override 
    public void onStart() { 
     super.onStart(); 

    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
    } 

    /** 
    * Check Connectivity of network. 
    */ 
    public static class NetworkUtil { 
     public static int TYPE_WIFI = 1; 
     public static int TYPE_MOBILE = 2; 
     public static int TYPE_NOT_CONNECTED = 0; 
     public static final int NETWORK_STATUS_NOT_CONNECTED = 0, NETWORK_STAUS_WIFI = 1, NETWORK_STATUS_MOBILE = 2; 

     public static int getConnectivityStatus(Context context) { 
      ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      if (null != activeNetwork) { 
       if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
        return TYPE_WIFI; 

       if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
        return TYPE_MOBILE; 
      } 
      return TYPE_NOT_CONNECTED; 
     } 

     public static int getConnectivityStatusString(Context context) { 
      int conn = NetworkUtil.getConnectivityStatus(context); 
      int status = 0; 
      if (conn == NetworkUtil.TYPE_WIFI) { 
       status = NETWORK_STAUS_WIFI; 
      } else if (conn == NetworkUtil.TYPE_MOBILE) { 
       status = NETWORK_STATUS_MOBILE; 
      } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) { 
       status = NETWORK_STATUS_NOT_CONNECTED; 
      } 
      return status; 
     } 

     public static boolean isOnline(Context context) { 
      try { 
       if (context == null) 
        return false; 

       ConnectivityManager cm = (ConnectivityManager) context 
         .getSystemService(Context.CONNECTIVITY_SERVICE); 

       if (cm != null) { 
        if (cm.getActiveNetworkInfo() != null) { 
         return cm.getActiveNetworkInfo().isConnected(); 
        } else { 
         return false; 
        } 
       } else { 
        return false; 
       } 
      } catch (Exception e) { 
       return false; 
      } 
     } 
    } 

} 

Antwort

3

1. eine RelativeLayout als direkte Kind AppBarLayout hinzufügen.

2. Put Toolbar und ImageView innen RelativeLayout.

3. Attribut hinzufügen android:layout_centerInParent="true" zu imageView bei center von Toolbar zu zeigen. Hier

ist der Arbeitscode:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/mainCoordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     app:elevation="0dp"> 

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

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:contentInsetLeft="0dp" 
       app:contentInsetStartWithNavigation="0dp" 
       app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

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

      <ImageView 
       android:id="@+id/toolbar_logo" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:src="@mipmap/ic_launcher" /> 
     </RelativeLayout> 

    </android.support.design.widget.AppBarLayout> 

    <!-- Your Content here --> 

</android.support.design.widget.CoordinatorLayout> 

In Ihrer Tätigkeit, fügen Sie unten Zeilen:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 

setSupportActionBar(toolbar); 
getSupportActionBar().setTitle(""); // hide title 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

OUTPUT:

enter image description here

diese

Hoffnung helfen ~

+1

Dank sehr viel. wie man die Menü-Schaltfläche hinzufügt, diese Schaltfläche Zurück hinzufügen – user8215914

+0

Erstellen Sie eine 'menu.xml' in Ihrem' res/menu'-Ordner und in Ihrer Aktivität ovverride 'onCreateOptionsMenu()', um ein Menü für diese Aktivität 'Toolbar' hinzuzufügen. Hier ist ein komplettes Tutorial: http://alvinalexander.com/android/how-to-create-options-menu-item-actionbar-respond-tap-click – FAT

+0

@ user8215914 Vielen Dank für die Annahme meiner Antwort. Wenn meine Antwort nützlich erscheint, hoffe ich, dass Sie eine Stimme abgeben werden. Danke ~ – FAT

0

es wie folgt tun:

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    app:elevation="0dp"> 

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

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:contentInsetLeft="0dp" 
      app:contentInsetStartWithNavigation="0dp" 
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

      <ImageView 
       android:id="@+id/toolbar_logo" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:src="@mipmap/ic_launcher" /> 

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

    </RelativeLayout> 

</android.support.design.widget.AppBarLayout>