Проблема со значками tabHost и tabWidget для Android

Я работаю над приложением для Android, которое использует значки Tab Host, загруженные из Интернета, и значок размер 30х30.

for(int i = 0; i < titleNames.size(); i++) 
{
    intent = new Intent().setClass(context, Gallery.class);
    sp = tabHost.newTabSpec(titleNames.get(i)).setIndicator(titleNames.get(i), res.getDrawable(R.drawable.icon)).setContent(intent);
    tabHost.addTab(sp);
}

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

for(int i = 0; i < titleNames.size(); i++) 
{
    intent = new Intent().setClass(context, Gallery.class);
    sp = tabHost.newTabSpec(titleNames.get(i)).setIndicator(titleNames.get(i), Drawable.createFromPath(path+iconNames.get(i))).setContent(intent);
    tabHost.addTab(sp);
}

Но если я использую этот код (изображение, загруженное из Интернета и находящееся во внутренней памяти) вместо предыдущего, значки кажутся такими маленькими, и даже значения высоты и ширины одинаковы для обоих значков. Я не масштабирую значки при загрузке их из Интернета и сохраняю их в формате PNG. Кто-нибудь знает, в чем проблема?

Вот табхост с иконками из ресурсов

Вот табхост с иконками, загруженными из интернета

РЕШЕНИЕ:

Вместо того, чтобы добавлять объекты на табхост с помощью моего предыдущего кода, теперь я использую код ниже , и это работает довольно хорошо. Разница между этими двумя заключается в том, что новый использует макет, который имеет представление изображения и текстовое представление для обозначения значка и текста ниже, чтобы установить индикатор намерения. Таким образом, я могу вызвать метод из представления изображения, чтобы изображение соответствовало его границам, определенным в файле xml. Вот как это сделать с помощью View.

    private void addTab(String labelId, Drawable drawable, Class c) {

    tabHost = getTabHost();
    intent = new Intent(this, c);
    spec = tabHost.newTabSpec("tab" + labelId);

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);

    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageDrawable(drawable);
    icon.setScaleType(ImageView.ScaleType.FIT_CENTER);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
}

А вот макет с изображением и текстом.




 

Спасибо @Venky и @SpK за идею.

6
задан osayilgan 17 May 2012 в 13:56
поделиться