我有一个使用gridview实现的菜单,其中每个单元格都包含一个带有可绘制图标的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);
我遇到的问题是从数据库加载的资源并不总是显示与从资源加载的图标相同的大小。在某些设备上,它们的大小相同,但在其他设备上则较小。
将所有drawable缩放为相同大小的正确方法是什么?
所有图像均为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>