如何在android中的按钮中添加文本背景?

时间:2017-06-01 06:14:53

标签: android xml android-layout android-studio android-activity

https://i.stack.imgur.com/iTalG.jpg

我设计了按钮,如上图所示。但是我无法将文本背景(带圆圈的)添加到按钮中。 如何实现?

这是我迄今取得的成就:

<View
    android:id="@+id/centerVertical"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_centerVertical="true"
    android:visibility="invisible" />

<View
    android:id="@+id/centerHorizontal"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:visibility="invisible" />

<Button
    android:id="@+id/today_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/centerVertical"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/centerHorizontal"
    android:layout_marginTop="20px"
    android:layout_marginBottom="10px"
    android:layout_marginLeft="20px"
    android:layout_marginRight="10px"
    android:background="@drawable/button1"
    android:gravity="center"
    android:text="Today"
    android:textColor="#FFFFFF" >
</Button>

<Button
    android:id="@+id/nextweek_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/centerVertical"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/centerHorizontal"
    android:layout_marginTop="20px"
    android:layout_marginBottom="10px"
    android:layout_marginLeft="10px"
    android:layout_marginRight="20px"
    android:background="#EF5350"
    android:gravity="center"
    android:text="Next Week"
    android:textColor="#FFFFFF" >
</Button>

<Button
    android:id="@+id/later_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/centerVertical"
    android:layout_toLeftOf="@+id/centerHorizontal"
    android:layout_marginTop="10px"
    android:layout_marginBottom="20px"
    android:layout_marginLeft="20px"
    android:layout_marginRight="10px"
    android:background="#66BB6A"
    android:gravity="center"
    android:text="Later"
    android:textColor="#FFFFFF" >
</Button>

<Button
    android:id="@+id/range_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/centerVertical"
    android:layout_toRightOf="@+id/centerHorizontal"
    android:layout_marginTop="10px"
    android:layout_marginBottom="20px"
    android:layout_marginLeft="10px"
    android:layout_marginRight="20px"
    android:background="#5C6BC0"
    android:gravity="center"
    android:text="Range"
    android:textColor="#FFFFFF" >
</Button>

XML Layout

5 个答案:

答案 0 :(得分:0)

您可以通过添加RelativeLayout而不是Button来轻松完成此操作。

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_alignParentBottom="true">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"/>

        <Button
            android:layout_width="40dp"
            android:layout_height="40dp" 
            android:layout_centerVertical="true"
            android:layout_alignParentEnd="true"
            android:layout_marginRight="20dp"/>

</RelativeLayout>

只需将文字设置为TextView,然后将来源添加到Button

答案 1 :(得分:0)

你需要这样做。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="250dp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:oreantation="horizontal">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="12dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

答案 2 :(得分:0)

https://stackoverflow.com/a/8823469/5898862

这是使用布局创建自定义按钮的最佳解决方案。您可以使用android:background属性

轻松设置背景颜色

答案 3 :(得分:0)

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/centerVertical"
    android:layout_marginBottom="20px"
    android:layout_marginLeft="10px"
    android:layout_marginRight="20px"
    android:layout_marginTop="10px"
    android:layout_toRightOf="@+id/centerHorizontal">

    <Button
        android:id="@+id/range_btn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#5C6BC0"
        android:gravity="center"
        android:text="Range"
        android:textColor="#FFFFFF" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#061FAF"
        android:drawableRight="@drawable/mail_icon"
        android:text="range text"
        android:textColor="#FFFFFF" />

</RelativeLayout>

答案 4 :(得分:0)

根据我的理解,你想要的是 - 你需要一个与图像相似/接近的按钮背景颜色。?

在Android 5.0版中,添加了一个类,可帮助您从位图中提取颜色。 Palette

下面是示例代码,您将从图像中获取相应的背景,然后您可以将其设置为按钮。

Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
    public void onGenerated(Palette palette) {
        // You will get color here
    }
});

可能的颜色组合是:

  1. 活力
  2. 充满活力的黑暗
  3. 充满活力的光明
  4. 静音
  5. Muted Dark
  6. 柔和的光线
  7. 要使用上面的类,请在项目中添加以下依赖项:

    dependencies {
        ...
        compile 'com.android.support:palette-v7:21.0.+'
    }
    

    ======================或======================== =

    另一种方法是你可以通过图像位图获得相应的颜色:

    public static int getRespectiveColor(Bitmap bitmap) {
        Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, 1, 1, true);
        final int color = newBitmap.getPixel(0, 0);
        newBitmap.recycle();
        return color;
    }
    

    希望以上两者都能解决你的问题。 :)干杯!!!