好的,我们走了......
我创建了一个自定义Drawable类,它将创建一个带有图标和下面一个数字的drawable。这个drawable的背景是透明的。
我的ImageButtons的宽度可以变化,从大约90像素到大约1044.我试图以一定的宽度/高度显示可绘制的并让它在每个按钮中居中。所以,如果我有一个宽度为90px的按钮,那么图标和数字都会居中,在按钮周围很少有填充。如果按钮现在是500px宽,则drawable的大小相同并且在按钮中居中。
到目前为止,我已经搞砸了android:scaleType,没什么。我有drawable公开一个方法,允许调用者指定边界:
public void setBounds(int left, int top, int right, int bottom)
{
super.setBounds(left, top, right, bottom);
}
现在调用者将边界设置为32x32。我希望以某种方式我可以强制按钮尊重drawable的边界大小,只在该按钮的中心呈现那个大小。这是调用过程。
ImageButton imgButton = (ImageButton)findViewById(R.id.button);
imgButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Drawable drawable = new CustomDrawable();
drawable.setBounds(0, 0, 32, 32);
imgButton.setImageDrawable(drawable);
我尝试的所有内容都会在按钮上拉伸可绘制内容。任何想法帮派?
以下是布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageButton
android:id="@+id/button"
android:layout_width="1044dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="center"/>