Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 动态更改操作栏sherlock中的菜单项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我在我的android应用程序中实现了操作栏sherlock.此应用程序具有购物车功能.操作栏上有一个图标,可将用户带到购物车.当物品被添加到购物车并从购物车中移除时,我需要动态更改该图标.这是一个数字应该出现在操作栏中的购物车图标的顶部.

以下是截图:

@H_196_0@menu.xml文件

<menu xmlns:android="http://scheR_195_11845@as.android.com/apk/res/android" >

    <item
        android:id="@+id/scAnner"
        android:icon="@drawable/ic_nav_scAnner"
        android:showAsAction="always"
        android@R_220_6964@="@String/scAnner"/>
    <item
        android:id="@+id/cart"
        android:icon="@drawable/ic_nav_cart"
        android:showAsAction="always"
        android@R_220_6964@="@String/cart"/>
    <item
        android:id="@+id/a_More"
        android:icon="@drawable/ic_nav_more"
        android:showAsAction="always"
        android@R_220_6964@="@String/more">
        <menu>
             <item
                android:id="@+id/LOCATIOn"
                android:icon="@drawable/ic_nav_dropdown_LOCATIOn"
                android:showAsAction="always"
                android@R_220_6964@="@String/LOCATIOn_action"/>

            <item
                android:id="@+id/fav"
                android:icon="@drawable/ic_nav_dropdown_favourite"
                android:showAsAction="always"
                android@R_220_6964@="@String/favourites"/>
            <item
                android:id="@+id/info"
                android:icon="@drawable/ic_nav_dropdown_information"
                android@R_220_6964@="@String/information"/>
        </menu>
    </item>

</menu>

码:

@Override
    public Boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.aiwmain, menu);
        return super.onCreateOptionsMenu(menu);
    }

@Override
    public Boolean onOptionsItemSELEcted(MenuItem item) {

        super.onOptionsItemSELEcted(item);

        switch (item.getItemId()) {
        case R.id.scAnner:

            //scAnner clicked
            break;
}

任何有助于动态更改操作栏上的购物车图标的帮助表示赞赏.

//编辑

我设法想出这个:

@Override
    public Boolean onPrepareOptionsMenu(Menu menu) {

        DBManager db = DBManager.getSingletonInstance();
        int cartItemCount = db.getCartItemCount(this);
        MenuItem cart = menu.findItem(R.id.cart);
        MenuItem scAnner = menu.findItem(R.id.scAnner);

        if(cartItemCount > 0){
                    //I want this item to be changed, I do not want to have seperate      drawables for all numbers.
            cart.setIcon(R.drawable.arrow_left);
        }

        return super.onPrepareOptionsMenu(menu);
    }

解决方法:

我想出了解决我问题的答案,我为CART菜单项设计了一个自定义布局:

badge.xml:

<RelativeLayout xmlns:android="http://scheR_195_11845@as.android.com/apk/res/android"
    android:layout_width="48dp"
    android:layout_height="fill_parent"
    android:clickable="true"
    style="@android:style/Widget.ActionButton" >

    <!-- Menu Item Image -->
    <ImageView
        android:id="@+id/img_view"
        android:layout_width="48dp"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:BACkground="@drawable/ic_nav_cart" />

    <!-- Badge Count -->

    <TextView
        android:id="@+id/actionbar_notifcation_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="99"
        android:textColor="#9F2828"
        android:textSize="14sp"
        android:layout_toRightOf="@+id/img_view"
        android:BACkground="@drawable/cart_circle"/>

</RelativeLayout>

在我的menu.xml中,我以这种方式包含它:

<item
        android:id="@+id/cart"
        android:actionLayout="@layout/badge"
        android:icon="@drawable/ic_nav_cart"
        android:showAsAction="always"
        android@R_220_6964@="@String/cart"/>

然后在我的活动中我使用它像这样:

@Override
    public Boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.aiwmain, menu);

        //getTing the count of cart items
        DBManager db = DBManager.getSingletonInstance();
        int cartItemCount = db.getCartItemCount(this);

        badgeLayout = (RelativeLayout) menu.findItem(R.id.cart).getActionView();
        menu.getItem(1).getActionView().setOnClickListener(this);
        TextView tv = (TextView) badgeLayout.findViewById(R.id.actionbar_notifcation_textview);
        tv.setText(""+cartItemCount);
        //do not show the count if count is 0
        if(cartItemCount == 0){
            tv.setVisibility(View.GONE);
        }
        return super.onCreateOptionsMenu(menu);
    }

上述方法位于BaseActivity中,所有其他活动都从该BaseActivity继承.因此,您无需在所有活动中包含此内容.

要处理CART ICON的onClick,请在所有活动中执行此操作:

public void onClick(View v) {
    // navigaTing to the cart details by checking the ids of menu item and
    // clicked layout.
    if (v.getId() == R.id.cart) {
        Intent order = new Intent(getApplicationContext(), CartDetailsActivity.class);
        startActivity(order);
    }
}

How to get text on an ActionBar Icon?

大佬总结

以上是大佬教程为你收集整理的android – 动态更改操作栏sherlock中的菜单项全部内容,希望文章能够帮你解决android – 动态更改操作栏sherlock中的菜单项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: