3

私は ActionBarSherlock を使用して、HoneyComb 以前のデバイスにActionBarを提供しています。

マイ アクティビティには、1. ユーザー 2. チャット 3. ビデオ 4. 追加の 4 つのフラグメントがあります。画像を参照してください。

ここに画像の説明を入力

次のコードを使用して actionBar を作成しました:-

            actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        actionBar.setTitle("Meeting");
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowCustomEnabled(false);
        actionBar.setDisplayShowTitleEnabled(false);

        /* Set Custom view */


        ActionBar.Tab tab = actionBar.newTab();
        // tab.setText("Meeting Users");
        tab.setIcon(R.drawable.users);
        tab.setTabListener(this);
        actionBar.addTab(tab);

        tab = actionBar.newTab();
        // tab.setText("Chat");
        tab.setIcon(R.drawable.chat);
        tab.setTabListener(this);
        actionBar.addTab(tab);

        tab = actionBar.newTab();
        // tab.setText("Video");
        tab.setIcon(R.drawable.video_call);
        tab.setTabListener(this);
        tab.select();
        actionBar.addTab(tab);

        tab = actionBar.newTab();
        // tab.setText("Extra");
        tab.setIcon(R.drawable.extra);
        tab.setTabListener(this);
        actionBar.addTab(tab);

チャットメッセージが到着し、ユーザーが他のタブにいるときはいつでも、チャットタブで描画および/または点滅するなど、これらのタブに何かを描画したい。

これどうやってするの ?助けてください。

4

2 に答える 2

3

タブにカスタム ビューを使用する

  ActionBar.Tab tab = getSupportActionBar().newTab();
  tab.setCustomView(R.layout.custom_tab_view);

次に、カスタム レイアウトでビューを取得し、点滅させることができます

于 2012-08-07T09:38:52.067 に答える
1

これが私の問題の解決方法です。他の人にも役立つことを願っています....

まず、ImageView を拡張して CutomImageView を作成しました

package com.myexample.newsessionwindowsrbrdemo;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.renderscript.Font.Style;
import android.widget.ImageView;

public class CustomImageView extends ImageView {
    private int notificationCount;

    /**
     * @param context
     */
    public CustomImageView(Context context) {
        super(context);
        notificationCount = 0;
    }

    public synchronized void incrementNotification() {
        notificationCount--;
        this.invalidate();
    }

    public synchronized void decrementNotification() {
        notificationCount++;
        this.invalidate();
    }

    /**
     * @return the notificationCount
     */
    public synchronized int getNotificationCount() {
        return notificationCount;
    }

    /**
     * @param notificationCount
     *            the notificationCount to set
     */
    public synchronized void setNotificationCount(int notificationCount) {
        this.notificationCount = notificationCount;
        this.invalidate();
    }

    /*
     * (non-Javadoc)
     * 
     * @see android.widget.ImageView#onDraw(android.graphics.Canvas)
     */
    @Override
    protected void onDraw(Canvas canvas) {
        System.out.println("OnDraw is called");
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.FILL);
        paint.setFakeBoldText(true);
        paint.setTextSize(15);
        canvas.drawText(String.valueOf(notificationCount), 15, 20, paint);
    }

}

次に、タブの作成中に、この画像を次のように使用しました

/* カスタム ビューを設定します */

    mView = new CustomImageView(this);
    mView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));

    mView.setBackgroundResource(R.drawable.users);
    ActionBar.Tab tab = actionBar.newTab();
    tab.setCustomView(mView);
    tab.setTabListener(this);
    actionBar.addTab(tab);

通知が変更されるたびに、CustomImageView のインクリメント/デクリメントまたはセッター メソッドを呼び出すと、新しい通知が画像に表示されます。

ここに画像の説明を入力

このソリューションを改善するための提案は大歓迎です...

于 2012-08-10T07:26:14.467 に答える