Sto lavorando a un'applicazione Android che utilizza le icone dell'host di schede scaricate da Internet e la dimensione dell'icona è 30x30.Scheda AndroidHost e tabWidget problema icona
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);
}
Se io uso questo codice di cui sopra (icona da risorse) per impostare il testo indicatore e l'icona, funziona abbastanza bene e l'icona adatta al widget scheda.
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);
}
Ma se io uso questo codice (immagine scaricata da internet e la sua nella memoria interna) al posto di quello precedente, le icone sembrano così piccoli, e anche l'altezza e valori di larghezza sono uguali per entrambe le icone. Non ridimensiono le icone quando li scarico da internet e li salvo come PNG. Qualcuno ha qualche idea su quale sia il problema?
Here is the tabhost with icons from resources
Here is the tabhost with icons downloaded from internet
SOLUZIONE:
Invece di aggiungere oggetti alla scheda host con il mio codice precedente, ora uso il codice qui sotto, e funziona abbastanza bene. La differenza tra questi due è la nuova sta usando un Layout che ha la visualizzazione delle immagini e la visualizzazione del testo per indicare l'icona e il testo sottostante per impostare l'indicatore dell'intenzione. Quindi in questo modo sono in grado di chiamare il metodo dalla vista immagine per rendere l'immagine adatta ai suoi limiti che è definita nel file xml. Ecco il modo per farlo con 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);
}
Ed ecco il layout con visualizzazione immagine e visualizzazione testo.
<?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>
Grazie a @Venky e @SpK per avermi dato un'idea.
[È meglio provare questo esempio] (http://stackoverflow.com/a/6992662/940096) Consiglio sempre questo esempio a tutti. – Praveenkumar
http://stackoverflow.com/questions/5567532/android-ui-tabactivity-issue/5567823#5567823 .. Prova questo post – Venky
Grazie per le tue risposte sono abbastanza utili, potrei usarlo più tardi. Ma quello che voglio fare è impostare queste icone della barra delle schede con le icone che ho scaricato da internet, e dal momento che non uso drawable-mdpi o drawable-ldpi in risorse esse non si adattano correttamente alla tabbar in base alla risoluzione dello schermo. Invece di usare le risorse mi piacerebbe usare le icone nella mia memoria interna. per esempio con createDrawableFromPath(). – osayilgan