如何在Button或ImageButton下面放置文本?

时间:2012-10-29 20:10:54

标签: android android-layout button imagebutton

我正在使用按钮(或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。如果有可能实现它,我想学习这样做。

这是我创建图标的方式:

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

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

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

提前致谢

1 个答案:

答案 0 :(得分: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);

以编程方式设置drawable