android– 动态更改 *** 作栏sherlock中的菜单项

android– 动态更改 *** 作栏sherlock中的菜单项,第1张

概述我在我的android应用程序中实现了 *** 作栏sherlock.此应用程序具有购物车功能. *** 作栏上有一个图标,可将用户带到购物车.当物品被添加到购物车并从购物车中移除时,我需要动态更改该图标.这是一个数字应该出现在 *** 作栏中的购物车图标的顶部.以下是截图:menu.xml文件:<menuxmlns:andr

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

以下是截图:

menu.xml文件:

<menu xmlns:androID="http://schemas.androID.com/apk/res/androID" >    <item        androID:ID="@+ID/scanner"        androID:icon="@drawable/ic_nav_scanner"        androID:showAsAction="always"        androID:title="@string/scanner"/>    <item        androID:ID="@+ID/cart"        androID:icon="@drawable/ic_nav_cart"        androID:showAsAction="always"        androID:title="@string/cart"/>    <item        androID:ID="@+ID/a_More"        androID:icon="@drawable/ic_nav_more"        androID:showAsAction="always"        androID:title="@string/more">        <menu>             <item                androID:ID="@+ID/location"                androID:icon="@drawable/ic_nav_dropdown_location"                androID:showAsAction="always"                androID:title="@string/location_action"/>            <item                androID:ID="@+ID/fav"                androID:icon="@drawable/ic_nav_dropdown_favourite"                androID:showAsAction="always"                androID:title="@string/favourites"/>            <item                androID:ID="@+ID/info"                androID:icon="@drawable/ic_nav_dropdown_information"                androID:title="@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://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="48dp"    androID:layout_height="fill_parent"    androID:clickable="true"     >    <!-- 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:title="@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中的菜单项所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1113248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存