如何在ImageButton中使用图标而不会出现像素化问题?

时间:2017-10-01 09:25:59

标签: android image-scaling android-imagebutton

我在自定义底部导航中使用ImageButton。我已经将32 * 32大小的图标设置为src。

这里是xml

 <ImageButton
        android:id="@+id/bottom_nav_profile"
        android:layout_width="match_parent"
        android:layout_height="50sp"
        android:layout_weight="1"
        android:src="@drawable/btm_nav_user_act"
        android:text="Profile"
        android:adjustViewBounds="true"
        android:scaleType="center"
        android:background="@drawable/bottom_nav_bg"
        android:textColor="#000"/>

当我在手机上查看时,它们看起来像素化了。我很好,他们更小,但我不希望他们像素化。如何进行调整以使其看起来更清晰。

以下是图标

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

您的图片似乎非常小,您有2个选项:

  • 删除硬编码高度(50dp),原始图像可能小于此值,强制其高度可能会降低某些设备的质量。

  • 您可以使用相同的绘图但不同的手机密度。我猜你在可绘制文件夹中只有一个版本的可绘制图像,在某些具有一定密度的手机上,这个图像可能显示得很糟糕(正如它可能在某些其他手机上显示得很好)。

答案 1 :(得分:0)

让我们使用线性布局和imageview制作自定义图像按钮

<LinearLayout
            android:id="@+id/id"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="vertical">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                 android:src="@drawable/btm_nav_user_act"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Profile"
                android:textColor="#000"/>


        </LinearLayout>

现在使用线性布局作为按钮。