2016-05-31 56 views
1

我正在嘗試爲我的項目菜單創建自定義佈局。我需要一個形象的圖標,顯示購物車是這樣的:工具欄中的自定義菜單項

image

我創建一個自定義的相對佈局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="48dp" 
    android:layout_height="fill_parent" 
    android:layout_gravity="right" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:clickable="true" 
     android:src="@drawable/ic_shopping_cart"/> 

    <TextView 
     android:id="@+id/counter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:padding="8dp" 
     android:text="5" 
     android:textSize="15sp" 
     android:textColor="#ffffff" /> 

</RelativeLayout> 

和項目菜單:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/icon_shopping_cart" 
     android:actionLayout="@layout/shopping_cart" 
     android:title="@string/shopping_icon_description" 
     app:showAsAction="always" /> 
</menu> 

有誰知道該怎麼做?

在此先感謝

編輯:

MainActivity.java

public class Prueba extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_agroquimicos); 

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

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     toolbar.inflateMenu(R.id.shopping_cart); 

    } 

} 

回答

1

如果你想在工具欄櫃臺嘗試ActionBarMenuItemCounter,它爲我工作

private Drawable buildCounterDrawable(int count, int backgroundImageId) { 
LayoutInflater inflater = LayoutInflater.from(this); 
View view = inflater.inflate(R.layout.counter_menuitem_layout, null); 
view.setBackgroundResource(backgroundImageId); 

if (count == 0) { 
    View counterTextPanel = view.findViewById(R.id.counterValuePanel); 
    counterTextPanel.setVisibility(View.GONE); 
} else { 
    TextView textView = (TextView) view.findViewById(R.id.count); 
    textView.setText("" + count); 
} 

view.measure(
     View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), 
     View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); 

view.setDrawingCacheEnabled(true); 
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); 
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache()); 
view.setDrawingCacheEnabled(false); 

return new BitmapDrawable(getResources(), bitmap); 
} 
+0

謝謝,它的工作 – eligonz

+0

@eligonz很高興幫助你快樂的編碼:) –

0

我想你的街上購物車保存爲圖像,並實現你的菜單佈局如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/icon_shopping_cart" 
     android:icon="@drawable/shopping_cart" 
     android:title="@string/shopping_icon_description" 
     android:showAsAction="always" /> 
</menu> 

並膨脹它你的活動/片段:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.menu_layout, menu); 

} 
+0

我並不完全需要,因爲購物車的數量可以修改。 – eligonz

+0

究竟是什麼問題?菜單佈局不顯示? – hopeman

+0

圖標顯示,但我不知道如何動態地在圖標中添加數字。 – eligonz

0

您的設置是正確的,現在只有下面是你需要的東西..

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.your_menu_file, menu); 

     final MenuItem item = menu.findItem(R.id.icon_shopping_cart); 
     TextView cartCount = (TextView) item.getActionView().findViewById(R.id.counter); 
     cartCount.setText("10"); 
     return true; 
    } 

,並刪除此行 toolbar.inflateMenu(R.id.shopping_cart);

happyCoding;

+0

它返回java.lang.NullPointerException:嘗試調用虛擬方法'android.view.View android.view.View.findViewById(int)'null TextView行的對象引用 – eligonz

+0

請確保您正在爲右側菜單文件充氣。NPE因爲可能是viewid或佈局未找到。 – Bharatesh