在侧面导航菜单上显示通知数

时间:2012-08-03 07:24:58

标签: android navigation horizontalscrollview spannablestring

我正在使用Horizo​​ntal ScrollView来获取像侧面导航这样的脸谱

像这样:

enter image description here

但是如何在菜单中的Event项旁边显示“2”?

在我的应用程序中,我使用ViewUtil类来获取此菜单:

public class ViewUtils {

    private ViewUtils() {

    }

    public static void setViewWidths(View view, View[] views) {
        int w = view.getWidth();
        int h = view.getHeight();
        for (int i = 0; i < views.length; i++) {
            View v = views[i];
            v.layout((i + 1) * w, 0, (i + 2) * w, h);
            printView("view[" + i + "]", v);
        }
    }

    public static void printView(String msg, View v) {
        System.out.println(msg + "=" + v);
        if (null == v) {
            return;
        }
        System.out.print("[" + v.getLeft());
        System.out.print(", " + v.getTop());
        System.out.print(", w=" + v.getWidth());
        System.out.println(", h=" + v.getHeight() + "]");
        System.out.println("mw=" + v.getMeasuredWidth() + ", mh="
                + v.getMeasuredHeight());
        System.out.println("scroll [" + v.getScrollX() + "," + v.getScrollY()
                + "]");
    }

    public static void initListView(Context context, ListView listView,
            String prefix, int numItems, int layout) {
        // By using setAdpater method in listview we an add string array in
        // list.
        String[] arr = new String[numItems];
        arr[0] = "Feed";
        arr[1] = "Friends";
        arr[2] = "Notifications";
        arr[3] = "Feedback";
        arr[4] = "Logout";
        listView.setAdapter(new ArrayAdapter<String>(context, layout, arr));

    }
}

并在Activity:

中设置适配器
    ViewUtils.initListView(this, myListView, "Menu ", 5,
            android.R.layout.simple_list_item_1);

我的“通知”文本是“通知n”之类的内容,其中n与上图中的“2”类似。我尝试使用Spannable String但我无法将Spannable String设置为字符串数组“arr”

谢谢

1 个答案:

答案 0 :(得分:0)

我假设这些类别(新闻Feed,消息,...)是ListView的项目 此外,为了显示“2”,我假设你需要一个自定义适配器。

在这种情况下,您只需要在行XML文件中添加TextView,并在自定义适配器的getView()方法中设置适当的值,或者,如果要创建TextView programaticaly in getView()方法。