各セルが描画可能なアイコンを持つ TextView で構成されるグリッドビューを使用して実装されたメニューがあります。その結果、画面いっぱいにアイコンが表示され、各アイコンの下に説明が表示されます。ほとんどのアイコンは、次のようなリソースから読み込まれます。
Drawable img = getResources().getDrawable(R.drawable.people);
textView.setCompoundDrawablesWithIntrinsicBounds(null, img, null, null);
メニューをパーソナライズするために、いくつかのアイコンがデータベースに保存されたビットマップから読み込まれ、次のように読み込まれます。
byte[] imageAsBytes = org.kobjects.base64.Base64.decode(base64BitmapString);
Bitmap bmp = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length);
Drawable img = new BitmapDrawable(parent.getResources(), bmp);
textView.setCompoundDrawablesWithIntrinsicBounds(null, img, null, null);
私が抱えている問題は、データベースからロードされたリソースが、リソースからロードされたアイコンと常に同じサイズで表示されないことです。一部のデバイスでは同じサイズですが、他のデバイスではサイズが小さくなっています。
すべてのドローアブルを同じサイズにスケーリングする適切な方法は何ですか?
すべての画像は 100x100 の png ファイルです。Android SDK のターゲット バージョンは 8 以上です。
これを編集して、グリッドとグリッド セルの xml を含めます。
グリッドセル:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
style="@style/ButtonGridCell"
android:layout_centerHorizontal="true"
android:drawablePadding="4dp"
android:gravity="center" >
</TextView>
グリッドのあるページ:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/PageLayout" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/homelogo"
style="@style/HomeLogo" />
<GridView
android:id="@+id/button_grid"
style="@style/ButtonGrid"
android:layout_below="@id/homelogo" >
</GridView>
</RelativeLayout>
</RelativeLayout>
スタイル:
<style name="ButtonGridBase">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="android:horizontalSpacing">15dp</item>
<item name="android:verticalSpacing">18dp</item>
<item name="android:gravity">center</item>
<item name="android:stretchMode">columnWidth</item>
<item name="android:layout_margin">8dp</item>
<item name="android:fadeScrollbars">false</item>
</style>
<style name="ButtonGrid" parent="@ButtonGridBase">
<item name="android:columnWidth">100dp</item>
<item name="android:numColumns">auto_fit</item>
</style>