インターネットからダウンロードしたタブ ホスト アイコンを使用する Android アプリケーションに取り組んでおり、アイコンのサイズは 30x30 です。
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 として保存します。誰でも問題が何であるかについて何か考えがありますか?
これは、インターネットからダウンロードされたアイコンを含むタブホストです
解決:
以前のコードでタブ ホストにオブジェクトを追加する代わりに、以下のコードを使用すると、非常にうまく機能します。これら 2 つの違いは、イメージ ビューとテキスト ビューを持つレイアウトを使用してアイコンを示し、その下にテキストを使用してインテントのインジケーターを設定するという新しいものです。このようにして、画像ビューからメソッドを呼び出して、xml ファイルで定義されている境界に画像を合わせることができます。ビューでそれを行う方法は次のとおりです。
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);
}
そして、これが画像ビューとテキストビューのレイアウトです。
<?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>
アイデアをくれた @Venky と @SpK に感謝します。