簡體   English   中英

工具欄中的自定義菜單項

[英]Custom menu item in Toolbar

我正在嘗試為我的項目菜單創建自定義布局。 我需要一個帶有圖像的圖標來顯示這樣的購物車:

形象

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

<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>

有誰知道怎么做?

提前致謝

編輯:

主活動.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);

    }

}

如果你想在工具欄中使用計數器試試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);
}

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

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

我會將您的購物車保存為圖像並按如下方式實現您的菜單布局:

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

}

您可以使用其他圖像並將其用作圖標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM