Android 操作项上的问题通知徽章

问题描述

我遇到了徽章文本视图无法显示我设置的文本的问题。 itemlist 的大小没有任何问题,只是计数的 textview 无法显示。 谁能帮我解决这个问题?

这是我的 menu.xml:

    <item
        android:id="@+id/cart"
        android:icon="@drawable/cart"
        android:title="Cart"
        app:actionLayout="@layout/custom_action_item_layout"
        app:showAsAction="always"/>

这是我的 custom_action_item_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    style="?attr/actionButtonStyle"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clipToPadding="false"
    android:focusable="true">

    <ImageView
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/cart"/>

    <TextView
        android:id="@+id/cart_badge"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_gravity="right|end|top"
        android:layout_marginEnd="-5dp"
        android:layout_marginRight="-5dp"
        android:layout_marginTop="3dp"
        android:background="@drawable/button_bg_down2"
        android:gravity="center"
        android:padding="3dp"
        android:textColor="@android:color/white"
        android:text="0"
        android:textSize="10sp"/>

</FrameLayout>

这是我的主要活动:

  
public class MainActivity extends AppCompatActivity {
    ................
    ......................
    TextView textCartItemCount;
    int mCartItemCount = 10;

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

        .....................
        ............................
    }

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

        final MenuItem menuItem = menu.findItem(R.id.cart);

        View actionView = MenuItemCompat.getActionView(menuItem);
        textCartItemCount = (TextView) actionView.findViewById(R.id.cart_badge);
        textCartItemCount.setVisibility(View.VISIBLE);

        setupBadge();

        actionView.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onoptionsItemSelected(menuItem);
            }
        });


        return true;
    }

    @Override
    public boolean onoptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case R.id.action_cart: {
                
                return true;
            }
        }
        return super.onoptionsItemSelected(item);
    }

      private void setupBadge() {

        c = itemlist.size();
        if (c >= 0) {
            textCartItemCount.setVisibility(View.VISIBLE);
            textCartItemCount.setText(String.valueOf(c));
        }
    }
...........................
...........................
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)