2015-10-20 16 views
10

मैं एंड्रॉइड विकास के लिए नया हूं और कस्टम टूलबार बनाने में मुझे बड़ी समस्याएं हैं। मेरे आवश्यकताओं:बाईं ओर कस्टम बटन के साथ टूलबार कैसे बनाएं?

बाईं तरफ
  1. कस्टम बटन (आइकन + पाठ) कस्टम बटन के बाद
  2. डिवाइडर
  3. बटन ऊंचाई (कोई मार्जिन) उपकरण पट्टी के रूप में ही किया जाना चाहिए

यहाँ नमूना है छवि जो मेरी आवश्यकताओं को समझाती है: enter image description here

मैं actionBar.setCustomView(v); का उपयोग करने की कोशिश कर रहा था लेकिन यह मेरी समस्याओं का समाधान नहीं किया:

  1. सही बटन ऊपर/नीचे मार्जिन हैं - वे उपकरण पट्टी
  2. की तुलना में छोटे मैं विभक्त जोड़ने में सक्षम नहीं था।
  3. बाएं बटन (कस्टम व्यू से) टूलबार ऊंचाई से छोटा था।

मेरे सवालों का:

  1. मैं वास्तव में बाईं तरफ कस्टम बटन जोड़ने के लिए कस्टम दृश्य की जरूरत है?
  2. बाईं ओर विभाजक जोड़ने के लिए कैसे?
  3. टूलबार ऊंचाई के समान बटन ऊंचाई कैसे बनाएं?
+0

आपके द्वारा दी गई समाधान का परीक्षण करने के लिए कोई मौका है? – reVerse

उत्तर

23

Toolbar मूल रूप से FrameLayout है ताकि आप जो भी चाहें लेआउट-टैग के अंदर जोड़ सकें। आपके मामले में निम्नलिखित की तरह कुछ पर्याप्त लगता है:

layout.xml

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?actionBarSize" 
    android:background="?colorPrimary" 
    app:contentInsetLeft="0dp" 
    app:contentInsetStart="0dp" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="?attr/actionBarSize" 
     android:divider="@drawable/divider" 
     android:dividerPadding="8dp" 
     android:orientation="horizontal" 
     android:showDividers="end"> 

     <TextView 
      android:id="@+id/toolbar_save" 
      style="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="?attr/selectableItemBackground" 
      android:drawableLeft="@drawable/ic_action_check" 
      android:drawablePadding="8dp" 
      android:gravity="center_vertical" 
      android:paddingLeft="16dp" 
      android:paddingRight="16dp" 
      android:text="Save" 
      android:textAllCaps="true" /> 

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

divider.xml

अपने /res/drawable फ़ोल्डर में इस जोड़े। इसका उपरोक्त कोड में LinearLayout विभक्त के रूप में उपयोग किया जाता है।

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <size android:width="1dp" /> 

    <solid android:color="@android:color/white" /> 

</shape> 

कोड

private void setupToolbar() { 
    Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(mToolbar); 
    // Hide the title 
    getSupportActionBar().setTitle(null); 
    // Set onClickListener to customView 
    TextView tvSave = (TextView) findViewById(R.id.toolbar_save); 
    tvSave.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO 
     } 
    }); 
} 

सही पक्ष पर आइटम के संदर्भ में: बस डिफ़ॉल्ट onCreateOptionsMenu विधि का उपयोग करें और इसी R.menu.* संसाधन बढ़ा देते हैं।

परिणाम

result image

+1

ऐप: contentInsetStart = "0dp" इसने मेरी समस्या हल की – umesh

0
<android.support.v7.widget.Toolbar 
     android:layout_width="match_parent" 
     android:layout_height="?actionBarSize" 
     app:contentInsetLeft="0dp" 
     app:contentInsetStart="0dp" 
     app:contentInsetStartWithNavigation="0dp" 
     /> 

आप एप्लिकेशन की जरूरत है: contentInsetStartWithNavigation = "0dp" टूलबार में

संबंधित मुद्दे