Android 中一个按钮上的两个文本?

Two Texts on a Single Button in Android?

我在 Android Studio 中有一个按钮:

<Button
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Event Name (23)" />

看起来像这样:

-------------------------------------
| Event Name (23)                   |
-------------------------------------

我想要的是在一个按钮中包含两条文本。

基本上,我想在按钮的左侧显示活动的名称...然后我想在按钮的右侧显示注册该活动的人数,所以它看起来像这个:

-------------------------------------
| Event Name                   (23) |
-------------------------------------

这样的事情可能吗?

我对 Android 完全陌生,所以请记住这一点。

您可以使用布局在其中显示两个文本it.And您可以在布局中添加侦听器。

使用可跨越的字符串

String text;
SpannableString finalText = new SpannableString(text);
finalText.setSpan((new AlignmentSpan.Standard(Alignment.ALIGN_OPPOSITE), <start index of right String>, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
button.setText(finalText);

您可以创建布局而不是按钮,然后在布局上执行点击事件。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp"
    android:id="@+id/relLayout">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Event Name"
        android:layout_alignParentLeft="true"
        android:textSize="16sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="(23)"
        android:textSize="16sp"/>

</RelativeLayout>

在Activity中:

RelativeLayout relLayout = (RelativeLayout) findViewById(R.id.relLayout);

        relLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Implement Your login on RelativeLayout click
            }
        });

请试试这个

  <RelativeLayout 
   android:id="@+id/btn"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="#ff0000"
   android:padding="10dp"
   >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:text="Event Name " />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="(23)" />

您可以在您的可绘制对象中添加一个名为 item_color_grey.xml 的文件 directory.The 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@color/item_grey" />
    <item android:state_focused="true" android:drawable="@color/item_grey" />
    <item android:state_pressed="true" android:drawable="@color/item_grey" />
     <item android:drawable="@color/white" />
</selector>

您可以使用下面的方法来做您需要做的事情。 在您的布局中定义这样的按钮:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:background="@drawable/lay_back"
    >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Event Name"
    android:layout_alignParentLeft="true"
    android:textSize="26sp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="(23)"
    android:textSize="26sp"/>

然后在您的可绘制文件夹中创建一个 xml 文件 lay_back.xml 并将以下代码写入其中。

对于涟漪效应:(对于更高 API 级别)

     <?xml version="1.0" encoding="utf-8"?>

     <ripple xmlns:android="http://schemas.android.com/apk/res/android"
      android:color="@color/white">
     <item android:drawable="@color/item_grey"/>
     </ripple>

对于选择器效果(降低 APIs):

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@color/white" />
    <item android:state_focused="true" android:drawable="@color/item_grey"       />
    <item android:state_pressed="true"      android:drawable="@color/item_dark_grey" />
 <item android:drawable="@color/item_grey" />
  </selector>

您可以给值目录 colors.xml 中存储的任何颜色。

即使这个 post 已经很老了。我找到了一个解决方案,就是在相对布局中放置两个按钮。

按钮 1 的文本左对齐 (clickable=false) 和按钮的样式表。

Button2 的文本右对齐 (clickable=true) 和按钮的样式表;背景透明

在 Activity 方面遇到问题,必须处理这两个按钮的启用和禁用状态。仅处理主按钮的点击。

如果有人正在寻找类似的解决方案,请告诉我;在这种情况下,我可以 post 示例代码。