当前位置: 首页 > 知识库问答 >
问题:

带有图标和文本的Android按钮

卢作人
2023-03-14

我的app里有一些这样的按钮:

    <Button
        android:id="@+id/bSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:text="Search"
        android:textSize="24sp" />

我正在尝试创建一个带有文本和图标的按钮。Android:DrawableLeft对我不起作用(也许会,但我不知道如何设置图标的最大高度)。

所以我创建了一个包含ImageView和TextView的LinearLayout,并使其像一个按钮一样运行:

    <LinearLayout
        android:id="@+id/bSearch2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/btn_default"
        android:clickable="true"
        android:padding="16dp"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:adjustViewBounds="true"
            android:maxHeight="30dp"
            android:maxWidth="30dp"
            android:scaleType="fitCenter"
            android:src="@drawable/search_icon" />

        <TextView
            android:id="@+id/tvSearchCaption"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:textSize="24sp"
            android:paddingRight="30dp"
            android:gravity="center"
            android:text="Search" />
    </LinearLayout>

我的新按钮正是我想要的(字体大小,图标和文本放置)。但它看起来不像我的默认按钮:

所以我试着改变新按钮的背景和文本颜色:

Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());

这给出了一个奇怪的结果,我的旧按钮被弄乱了:

当我改变XML中这两个按钮的顺序时,“New Button”首先出现,这会产生另一个奇怪的结果:

现在我注意到,当我试着按旧的按钮时,新的按钮被按下了。

有什么想法吗?

共有2个答案

万铭
2023-03-14

要向左、右、顶部或底部添加图像,可以使用如下属性:

android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom

上面给出了示例代码。您也可以使用相对布局来实现这一点。

徐瑞
2023-03-14

试试这个。

<Button
    android:id="@+id/bSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:text="Search"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:textSize="24sp"/>
 类似资料:
  • 我想包括使用FXML的图标和文本按钮。 我知道在FXML中,我可以用以下代码添加图像: 但我想知道如何将其与按钮代码合并:

  • 在Bootstrap框架下的一个按钮中,我很难将字体很棒的图标与文本垂直对齐。我尝试了很多事情,包括设置线的高度,但都没有效果。 http://jsfiddle.net/fPXFY/ 我怎样才能让这个工作?

  • 问题内容: 好吧,这种特定的布局让我很烦。而且似乎找不到找到listView的方法,在底部有一行按钮,这样listview不会延伸到按钮的上方,因此这些按钮始终固定在屏幕的底部。这就是我想要的: 删除了死的ImageShack链接 似乎应该这么简单,但是我尝试过的所有方法都失败了。有什么帮助吗? 这是我当前的代码: 问题答案: 我认为这就是您想要的。

  • 是否可以在工具栏中同时显示主页图标和后退图标?1) 是否可以更改后退按钮图标和主页图标的显示顺序。目前,它首先显示箭头按钮,然后显示徽标(主页按钮) 2) 第二个要求是在单击home图标并返回上一个屏幕(如果是back按钮)时清除活动堆栈。 我有以下代码,将显示一个箭头键和主页图标,这是设置为标志。是否可以处理这两个图标上的点击事件: 我可以通过onOptionsITemSelec方法处理点击箭头

  • 我试图使用APACHE POI创建一个段落,其中包含左边的图像和右边的一些文本。有什么方法可以设置这两个组件之间的对齐方式吗? 下面是在表中执行我想要的操作的代码,但它也呈现了这两个段落。 提前谢谢你。

  • 我有一个很简单的情况,我似乎无法解决。我想将文本垂直居中到FontAwesome图标。但我一辈子都想不出为什么它不居中。 我尝试过其他答案,但没有一个使用:before CSS定义,这是一种非常普遍的实现图标的方法。