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 示例代码。
我在 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 示例代码。