Заполните Android Tab пользовательской картинкой и / или цветом - PullRequest
3 голосов
/ 08 января 2011

Привет всем, что я создал в Google, например, макет вкладки

HelloTabWidget.java:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost();  // The activity TabHost
TabHost.TabSpec spec;  // Resusable TabSpec for each tab
Intent intent;  // Reusable Intent for each tab

// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, ArtistsActivity.class);

// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                  res.getDrawable(R.drawable.ic_tab_artists))
              .setContent(intent);
tabHost.addTab(spec);

// Do the same for the other tabs
intent = new Intent().setClass(this, AlbumsActivity.class);
spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                  res.getDrawable(R.drawable.ic_tab_albums))
              .setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, SongsActivity.class);
spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                  res.getDrawable(R.drawable.ic_tab_songs))
              .setContent(intent);
tabHost.addTab(spec);

tabHost.setCurrentTab(2);

}

Я знаю, как создать свою собственную иконку для использования вместо их серо-белого микрофона, но я не могу понять, как заставить мою собственную иконку заполнить всю вкладку. Когда вкладка выбрана, она светло-серая с моим изображением посередине, а когда она не выбрана, она темно-серая с моим рисунком посередине. Я предпочитаю, чтобы моя собственная картинка заполняла всю вкладку, и для более знающих; мой собственный выбор цвета для заполнения вкладки.

1 Ответ

3 голосов
/ 08 января 2011

Вы можете использовать setIndicator(View view), чтобы делать более сложные вещи с помощью индикатора табуляции.

Попробуйте поиграть с этим ...

ImageView imgView = new ImageView(this);

// Use imgView.setImageDrawable(Drawable drawable) or
// imgView.setImageBitmap(Bitmap bitmap) to load
// the image you want into imgView

spec = tabHost.newTabSpec("artists").setIndicator(imgView).setContent(intent);

Я не уверен, что это то, что выхотите, но вы можете (теоретически) использовать любой класс View в качестве индикатора, если ImageView не работает для вас.

РЕДАКТИРОВАТЬ:

Я пытался ...

    BitmapDrawable bmd = new BitmapDrawable();
    bmd = (BitmapDrawable) res.getDrawable(R.drawable.ic_tab_artists_grey);
    imgView.setImageDrawable(bmd);
...