1

我正在使用按钮(或 ImageButtons)来显示我的应用程序的图标。我用它来设置按钮的状态,按下按钮的图像和未按下按钮的图像:

selector(this, favorites,  R.drawable.icon_star_mark,  R.drawable.icon_star_mark_selected);

public static void selector(Context c, Button b, int normal_image, int pressed_image){
        StateListDrawable states = new StateListDrawable();
        states.addState(new int[] {android.R.attr.state_pressed}, c.getResources().getDrawable(pressed_image));         
        states.addState(new int[] { }, c.getResources().getDrawable(normal_image));      
        b.setBackgroundDrawable(states);
    }

我需要将文本放在图标下方,但我想在不使用带有图标的 LinearLayout 和其下方的 textview 的情况下学习这样做。如果有可能,我想学习这样做。

这是我创建图标的方式:

Button map= new Button(this);
selector(this, map,  R.drawable.icon_map,  R.drawable.icon_map_selected);
map.setText("Map");

问题是文本显示在图标上方,而不是图标下方。

有可能用java代码实现吗?(将图标的文本放在图标下方,而不使用图标下方带有文本视图的线性布局)

提前致谢

4

1 回答 1

6

可以使用 drawableTop 属性。选择器进入 android:background,图标进入 android:drawableTop attr。

<Button
        android:id="@+id/btn"
        style="@style/DashboardButton"
        android:drawableTop="@drawable/any_drawable"
        android:text="@string/any_text" />

或者您可以使用以编程方式设置可绘制对象button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

于 2012-10-29T20:29:47.463 回答