1

各セルが描画可能なアイコンを持つ 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>
4

1 に答える 1