Estoy trabajando en una aplicación de Android que utiliza los iconos de Tab Host descargados de Internet y el tamaño del icono es 30x30.Android tabHost y tabWidget icon issue
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);
}
Si utilizo este código anterior (icono de recursos) para establecer el texto del indicador y el icono, que funciona bastante bien y el icono se ajusta al widget pestaña.
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);
}
Pero Si utilizo este código (imagen descargada de Internet y está en la memoria interna) en lugar de la anterior, iconos parecen tan pequeña, e incluso los valores de altura y anchura son los mismos para los dos iconos. No escalo los íconos cuando los descargo de internet y los guardo como PNG. ¿Alguien tiene alguna idea sobre cuál es el problema?
Here is the tabhost with icons from resources
Here is the tabhost with icons downloaded from internet
SOLUCIÓN:
En lugar de añadir objetos al host pestaña con mi código anterior, ahora uso el código de abajo, y funciona bastante bien. La diferencia entre estos dos es nueva: se usa un diseño que tiene vista de imagen y vista de texto para indicar el icono y el texto a continuación para establecer el indicador del intento. Así, de esta manera, puedo llamar al método desde la vista de imagen para hacer que la imagen se ajuste a sus límites, que se define en el archivo xml. Aquí está la manera de hacerlo con Vista.
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);
}
Y aquí está el diseño con vista de imagen y vista de texto.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="55dip"
android:layout_weight="1"
android:orientation="vertical"
android:padding="5dp"
android:weightSum="55" >
<ImageView
android:id="@+id/icon"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@drawable/icon"
android:adjustViewBounds="false"
android:layout_weight="30"
/>
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="25"
android:gravity="center_horizontal"
/>
</LinearLayout>
Gracias a @Venky y @SpK por hacerme una idea.
[Es mejor que pruebe este ejemplo] (http://stackoverflow.com/a/6992662/940096) Siempre sugiero este ejemplo a todos. – Praveenkumar
http://stackoverflow.com/questions/5567532/android-ui-tabactivity-issue/5567823#5567823 .. Pruebe esta publicación – Venky
Gracias por sus respuestas, son bastante útiles, puedo usarlo más adelante. Pero lo que quiero hacer es configurar estos iconos de la barra de pestañas con iconos que descargué de Internet, y como no utilizo drawable-mdpi o drawable-ldpi en recursos, no se ajustan a tabbar correctamente según la resolución de la pantalla. En lugar de usar recursos, me gustaría utilizar íconos en mi memoria interna. por ejemplo, con createDrawableFromPath(). – osayilgan