【问题标题】:I have inflate custom layout on menu Item to show count我在菜单项上膨胀了自定义布局以显示计数
【发布时间】:2019-06-11 06:02:10
【问题描述】:

我将自定义布局膨胀到菜单向上栏以显示购物车项目中的计数,并通过项目点击来实现。如何在此处的菜单中显示或设置计数?我有点困惑。如果可能的话,有什么想法吗?

我试过了

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.home_screen, menu);
final Menu m = menu;
final MenuItem item = menu.findItem(R.id.nav_cart);

item.getActionView().setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(HomeScreen.this, "hello", Toast.LENGTH_SHORT).show();
    }
});

自定义布局 XML。所以在这里我想设置徽章数量,但是如何设置呢?

文件

<RelativeLayout
    android:id="@+id/cart"
    android:layout_width="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/cart_bag"
        android:layout_width="25dp"
        android:layout_height="25dp"
        app:srcCompat="@drawable/bag" />

    <com.nex3z.notificationbadge.NotificationBadge
        android:id="@+id/badge"
        android:layout_width="20dp"
        android:layout_alignParentTop="true"
        android:layout_alignTop="@id/cart_bag"
        android:layout_height="20dp"
        app:nbBackground="@drawable/badge_bg_with_shadow"
        android:layout_marginLeft="15dp"
        app:nbMaxTextLength="2"/>

</RelativeLayout>

菜单项

android:id="@+id/nav_cart"
android:orderInCategory="15"
android:title="@string/action_settings"
app:actionLayout="@layout/custom_layout_cart"
app:showAsAction="always"

【问题讨论】:

标签: java android android-layout android-custom-view menuitem


【解决方案1】:

尝试以编程方式添加自定义布局..像这样

    final MenuItem item = menu.findItem(R.id.nav_cart);
    MenuItemCompat.setActionView(item, R.id.custom_layout_cart);
    actionView = MenuItemCompat.getActionView(item);
    ImageView btn = (ImageView) actionView.findViewById(R.id.cart_bag);
    NotificationBadge count = (TextView) actionView.findViewById(R.id.badge);
    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(HomeScreen.this, "hello", Toast.LENGTH_SHORT).show();
    }
});

【讨论】:

    【解决方案2】:

    尝试从您的自定义徽章布局中将计数值设置为 textview。

    val tvCartCount = actionView.findViewById(R.id.your_cart_count_id) as TextView
    
    tvCartCount.text = "Your Cart Value"
    

    您可以参考this solution 以获得更好的理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      相关资源
      最近更新 更多