1

这是一个普遍的问题。我在 Google 上找不到任何答案,所以在 stackoverflow 上询问。

一些 android 应用程序在活动(操作栏)的顶部有购物车按钮。例如,我附上了亚马逊 android 应用程序的图像。所有产品都将被列出webview,当用户在亚马逊下订单时,订单购物车会更新操作栏中的数字从 0 到 1。这种更新发生在 android 中,从webview最有可能在 android 中使用的一些小部件。

谁能让我们知道如何实现这一目标或整个活动本身是如何实现的webview?我想知道他们正在使用什么小部件以及他们如何更新活动中的购物车。

任何指向示例的指针都会非常有帮助。

附件是亚马逊安卓应用程序屏幕的图像。

亚马逊 android 应用程序的图像

谢谢。

4

4 回答 4

1

我不知道标准操作栏项目是否可以在运行时更新。

但是,操作栏支持向其添加自定义布局的能力。在这种情况下,我认为在将商品添加到购物车时设置侦听器没有任何困难,并通过更新该自定义布局将其反映在 UI 上。

更新:
要从代码中添加自定义布局:

ActionBar bar = getActionBar();
bar.setCustomView(R.layout.custom_action_bar);

或从样式:

<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
  .....
  <item name="android:customNavigationLayout">@layout/custom_action_bar</item>
</style>

现在,在您的R.layout.custom_action_bar按钮中,您将看到上面带有数字的按钮,代表购物车中的商品数量。显然,该数字应该是 a TextView,每次将商品添加到购物车时都会递增。

为此,您将需要在您的活动中使用一个侦听器,该侦听器将更新该 TextView,例如:

@Override
public void onItemAdded(){
   cart.setText(CURRENT_NUMBER_OF_ITEMS_IN_CART);
}
于 2012-08-14T11:14:42.387 回答
0

这可能会对您有所帮助,这可能不是问题的正确答案。

我认为您可以使用WebViewClientand来做到这一点onPageFinished。注意特定的 URL 模式。如果模式匹配,您可以执行您需要的操作。

还有一种方法,也考虑一下,

让应用程序向服务器发送请求以更新购物车。该应用程序会经常向服务器发送请求以检查购物车更新。

:)

于 2012-08-14T11:20:04.180 回答
0

他们使用操作栏,操作栏是显示在顶部栏上的窗口羽毛,有关更多信息和示例,您可以在 此处查看 google I/O 应用程序的源代码

于 2012-08-14T10:49:55.773 回答
0

在您的 res/menu/menuitem.xml 中,您可以定义以下选项:

android:actionLayout="@layout/yourcustomlayout"

你的自定义布局可能在哪里

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="3dip"
    android:src="@drawable/cart" />

<TextView
    android:visibility="invisible"
    android:id="@+id/tv"
    style="@style/DefaultTextStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center|top"
    android:background="@drawable/mybackground" />

在 onCreateOptionsMenu 中,您可以对 textview 的引用如下:

private TextView cartTV;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.virtual_betting, menu);
    MenuItem item = menu.getItem(0);
    cartTV = (TextView) item.getActionView().findViewById(R.id.pallino);

    return true;
}

并在需要更新时更新

于 2013-06-14T15:41:23.233 回答