2013-03-27 125 views
0

我有ToggleButton与设置在android:background属性中的图像。此背景图片适合所有背景。Android如何调整图像背景以居中

我想在较大的ToggleButton中放置一个较小的背景图像,以避免放大图像以适应所有背景。

有人有线索吗?

回答

0

好吧,我知道了:

首先,我们在我们的XML布局创造我们的切换按钮。想想我们的绘制是其中含有比ToggleButton背景小两(为选中和未选中状态)图像的选择:

<ToggleButton 
    android:id="@+id/messageSeeMoreToggleButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOff="" 
    android:textOn="" 
    android:background="@drawable/selector_wall_toggle_see_more_button" 
    android:contentDescription="@string/conversation_see_more_Button_description" /> 

然后,在我们的Activity类中,我们发现我们的ToggleButton像往常一样:

viewHolder.messageSeeMoreToggleButton = (ToggleButton) view.findViewById(R.id.messageSeeMoreToggleButton); 

现在,我们将使用StateListDrawable.setLevel更改drawable的外观。我们可以为更好的结果调整setLevel值:

StateListDrawable stateListDrawable = (StateListDrawable) viewHolder.messageSeeMoreToggleButton.getBackground(); 
stateListDrawable.setLevel(3000); 

因此,我们将有ToggleButton背景的正中央我们的形象,避免放大图像。

我希望它可以帮助别人。

0

如果您想在图片上放置文本,您可能必须使用代码而不是XML来设置图片。喜欢的东西:

Resources r = getResources(); 
Drawable myimage = r.getDrawable(R.drawable.myimage); 
Button mybutton = findViewById(R.id.mybutton); 
myimage.setBounds(0, 0, myimage.getIntrinsicWidth(), myimage.getIntrinsicHeight()); 
mybutton.setCompoundDrawables(myimage, null, null, null);