Почему изображения в WidgetTab не отображаются, если minSdkVersion>10?
Я пытался создать простой TabActivity
с 3 вкладками. Все работает кроме если я поставлю android:minSdkVersion="11"
в файле манифеста значки не отображаются. Если я установлю `minSdkVersion="10", все будет хорошо.
Я выглядел высоко и низко, но я не смог определить, что не так.
Я поместил те же изображения в, казалось бы, соответствующие каталоги ресурсов:
RES / вытяжка-ИПЧР-v5
RES / вытяжке-ldpi-v5
RES / вытяжке-MDPI-v5
RES / вытяжке-xhdpi-v5
И код прост:
import android.app.TabActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TabWidget;
public class Review extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost tabs = getTabHost();
getLayoutInflater().inflate(R.layout.main,
tabs.getTabContentView(), true);
Resources resources=getResources();
Log.d("testing", String.format("icon: %d.%d",
resources.getDrawable(R.drawable.review).getIntrinsicWidth(),
resources.getDrawable(R.drawable.review).getIntrinsicHeight()));
TabHost.TabSpec details = tabs.newTabSpec("review"). setContent(R.id.review).
setIndicator(getString(R.string.review),
resources.getDrawable(R.drawable.review));
TabHost.TabSpec gallery=tabs.newTabSpec("gallery").setContent(R.id.photos)
.setIndicator(getString(R.string.gallery),
resources.getDrawable(R.drawable.photos));
TabHost.TabSpec reservation=tabs.newTabSpec("reservation").
setContent(R.id.reservation)
.setIndicator(getString(R.string.reservation),
resources.getDrawable(R.drawable.reservation));
tabs.addTab(details);
tabs.addTab(gallery);
tabs.addTab(reservation);
}
}
Копаясь в этом, единственное отличие, которое я вижу внутри Android 2.0 и 3.0, заключается в том, что Android использует RelativeLayout
вместо LinearLayout
в реализации 2.0.
Просто чтобы быть уверенным, что изображения значков находят, Log.d
из вышеперечисленных шоу:
иконка: 32.32 как и должно быть.
Почему этот переход с Android 2.0 на 3.0 делает это???? Я надеюсь, что кто-то еще столкнулся с этим, и это очевидно. Большое спасибо за вашу помощь!
-- ОБНОВИТЬ:
Сегодня я обнаружил, что при более внимательном рассмотрении того, что на самом деле происходит, когда этот код создается для Android 3.0+, я узнал, что ImageView
это происходит, когда SetIndeicator(string, drawable)
называется для каждого TabSpec
, на самом деле никогда не установлены и на самом деле NULL
(ImageView.mDrawable==null
) а также INVISBLE
,
Если я заставлю установить те drawables, которые будут установлены, и вызову ImageView.setVisiblity(View.VISIBLE)
тогда они появляются. Однако в Android 2.0 они выглядят сложенными с изображением выше и текстом ниже, как в:
<image>
<text>
Под Android 3.0 они появляются (когда принудительно, как указано выше) бок о бок, как в:
<image><text>
Таким образом, похоже, что многое изменилось, и мне нужно более тщательно исследовать изменения для Android 3.0.
Оставайтесь с нами, чтобы узнать больше...
- Окончательное обновление:
В конечном итоге я отказался от этой авеню и решил, что этот стиль ведения дел изменился, и, возможно, теперь он устарел, и есть другие более эффективные способы сделать это, а значки немного старомодны.
1 ответ
Странно, это решает проблему
//bmOptions.inSampleSize = 1; //or better bmOptions.inScaled = false;
больше на: /questions/16918202/android-zagruzka-izobrazheniya-s-veb-adresa/16918216#16918216