Android tabHost und tabWidget Icon Problem

Ich arbeite an einer Android-Anwendung, die die Tab-Host-Icons aus dem Internet heruntergeladen und Icon-Größe ist 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); } 

Wenn ich diesen Code oben (Symbol aus Ressourcen) verwende, um den Indikatortext und das Icon einzustellen, funktioniert es ganz gut und das Icon passt zum Tab-Widget.

  • Löschen (Raw) Kontakte in Android 2.x
  • Gradle: Pros / Cons Hinzufügen von Abhängigkeiten
  • Einzelne XML, Multiple Activity & There Performance
  • Verschieben von Markierungen in Google Map v2 android
  • Android: LocationManager vs Google Play Services
  • Android Proguard Javascript Interface Problem
  •  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); } 

    Aber wenn ich diesen Code (Bild heruntergeladen aus dem Internet und seine im internen Speicher) anstelle der vorherigen, Symbole scheinen so klein, und sogar die Höhe und Breite Werte sind für beide Symbole gleich. Ich skaliere nicht die Ikonen beim Herunterladen von ihnen aus dem Internet und ich speichere sie als PNG. Jeder hat eine Ahnung, was das Problem ist?

    Hier ist der tabhost mit Icons aus Ressourcen

    Hier ist der tabhost mit Icons aus dem Internet heruntergeladen

    LÖSUNG:

    Anstatt Objekte auf den Tab-Host mit meinem vorherigen Code hinzufügen, jetzt benutze ich den Code unten, und es funktioniert ganz gut. Der Unterschied zwischen diesen beiden ist neu ist ein Layout, das Bildansicht und Textansicht hat, um Symbol und den Text unten anzugeben, um den Indikator der Absicht einzustellen. So kann ich auf diese Weise die Methode aus der Bildansicht aufrufen, um das Bild an die Grenzen zu bringen, die in der XML-Datei definiert ist. Hier ist der Weg, um es mit View zu tun.

      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); } 

    Und hier ist das Layout mit Bildansicht und Textansicht.

     <?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> 

    Danke an @Venky und @SpK, um mir eine Idee zu geben.

  • Sqlite LIKE Problem in Android
  • Fehler beim Installieren aufgrund von Timeout im Emulator
  • Xamarin Studio Cross Plattform App Fehler
  • Ist der Android-Service noch nach dem OnDestroy () aufgerufen?
  • Wie kann man die Validierung auf Leinwand setzen?
  • Wie verwalte ich git submodule Teilprojekte in Eclipse?
  • 2 Solutions collect form web for “Android tabHost und tabWidget Icon Problem”

    Anstatt Objekte auf den Tab-Host mit meinem vorherigen Code hinzufügen, jetzt benutze ich den Code unten, und es funktioniert ganz gut. Der Unterschied zwischen diesen beiden ist neu ist ein Layout, das Bildansicht und Textansicht hat, um Symbol und den Text unten anzugeben, um den Indikator der Absicht einzustellen. So kann ich auf diese Weise die Methode aus der Bildansicht aufrufen, um das Bild an die Grenzen zu bringen, die in der XML-Datei definiert ist. Hier ist der Weg, um es mit View zu tun.

     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); } 

    Und hier ist das Layout mit Bildansicht und Textansicht.

     <?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> 

    Danke an @Venky und @SpK, um mir eine Idee zu geben.

    Tab-Symbol Dimensionen für High-Density (hdpi) Bildschirme: Full Asset: 48 x 48 px Icon: 42 x 42 px

    Tab-Symbol Dimensionen für mittlere Dichte (mdpi) Bildschirme: Full Asset: 32 x 32 px Icon: 28 x 28 px

    Tab-Symbol Dimensionen für Low-Density (ldpi) Bildschirme: Full Asset: 24 x 24 px Icon: 22 x 22 px

    Sie können dies sehen: http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.