2012-08-07 8 views
3

Я использую ActionBarSherlock, чтобы предоставить ActionBars для устройств предварительной HoneyComb.Как нарисовать на вкладке ActionBar при использовании ActionBarSherlock в Android?

Моя активность имеет четыре фрагмента, а именно 1. User 2. Чат 3. Видео 4. Дополнительных см изображения

enter image description here

Я создал 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); 

Я хочу нарисовать что-нибудь на этих вкладках, например, рисовать и/ИЛИ мигать на вкладке чата, всякий раз, когда появляются сообщения чата, а пользователь находится на другой вкладке.

Как это сделать? пожалуйста помоги.

+1

https://developer.android.com/training/basics/actionbar/styling.html –

ответ

1

Это Как решить мою проблему, Надеюсь, что это может быть полезным для кого-то слишком ....

Сначала я создал CutomImageView путем расширения ImageView

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 и новые уведомления отображаются на образ ..

enter image description here

Предложения по улучшению этого решения действительно приветствуются ...

3

Использовать пользовательский вид для вкладок

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

Тогда вы можете получить мнения относительно заказного макета и сделать мигающий

+0

Если я добавлю пользовательский вид, значок исчезнет ... Как я могу получить эту работу, пожалуйста, помогите .. – aProgrammer

+0

добавить значок к пользовательскому представлению макет, например http://pastebin.com/3WnTVTv6 –

+0

спасибо за код ... Это будет работать, я знаю, но я хочу нарисовать текст на изображении, т.е. уведомления facebook .. или что-то вроде SO-уведомлений, также может работать ... Я попытался расширить ImageView и использовать его, но результат не так, как ожидалось. Похоже, мне придется загрязняться с помощью Paint/Canvas ... Любые предложения? – aProgrammer

Смежные вопросы