出于某种原因,我需要使用带有图标和文字的按钮。因此,我无法使用ImageButton
,因此我会寻求解决方案来设置正常drawableTop
的{{1}}。
Button
尺寸为方形140dp(请参阅下面的屏幕截图)
我计划使用125x125像素,资产本身清晰明快。
然而,这个125px的资产不知何故被按钮放大了,就像下面的截图一样。
该设备是xhdpi设备。
如您所见,方形按钮内的图标模糊,看起来像是以某种方式放大
这里我粘贴了我的按钮XML
Button
<Button
android:id="@+id/button_call_us"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_margin="@dimen/main_menu_button_margin"
android:adjustViewBounds="true"
android:background="@drawable/custom_button"
android:drawablePadding="-20dp"
android:drawableTop="@drawable/button_call_us_icon"
android:lines="2"
android:paddingTop="0dp"
android:scaleType="fitXY"
android:text="CALL US"
android:textColor="@color/white"
android:textSize="6pt" />
是紫色背景,没有任何图案。
android:background="@drawable/custom_button"
是图标。
除了android:drawableTop="@drawable/button_call_us_icon"
,我还尝试了android:scaleType="fitXY"
和其他选项,但仍未获得理想的结果。
我的问题是:
为什么centerInside
内的可绘制内容会被放大?有没有办法阻止它?
由于
答案 0 :(得分:1)
因为它是一个按钮,你想在按钮内部绘制一个可绘制的。您可能的解决方案是使用实际实现可绘制属性的ImageButton
。然后,您可以调用android:scaleType="fitCenter"
并设置一些填充
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/android_button" />
然而,为了在设计方面获得更多自由,你可以使用一个简单的布局而不是按钮,就像这样,只需按照LinearLayout
处理按钮就可以了。添加onclicklistener:
<LinearLayout android:orientations="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical"
android:background="#CCC"
android:padding="8dp"
android:gravity="center">
<ImageView android:src='@drawable/ic_launcher'
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:text="Lorem Ipsum"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
</LinearLayout>
答案 1 :(得分:0)
试试此代码
Drawable img = getResources().getDrawable( R.drawable.img );
img.setBounds( 0, 0, (int)(img.getIntrinsicWidth()),
(int)(img.getIntrinsicHeight()) );
button.setCompoundDrawables(null, img, null, null);