- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 Switch,可以在男性和女性之间进行选择。
所以我将 textOff 和 textOn 分别设置为“男性”和“女性”,但根据开关位置,只显示男性或女性之一。
如何让它同时显示男性和女性?
所以,在 ascii-art 中
我有
[Male / ]
or
[ / Female ]
但是我想要
[**Male** / Female]
[Male / **Female**]
最佳答案
可以,但是有点麻烦。
这是我为实现此目的所做的工作:
我为开关的轨迹使用了一个自定义的可绘制对象。 (轨道是拇指在其中左右滑动的容器。)
mMessengerSwitch.setTrackDrawable(new SwitchTrackTextDrawable(this,
"LEFT", "RIGHT"));
下面是 SwitchTrackTextDrawable
的实现,它将背景中的文本准确地写在正确的位置(好吧,我只在 Nexus 5 上针对 API 23 测试过它):
/**
* Drawable that generates the two pieces of text in the track of the switch, one of each
* side of the positions of the thumb.
*/
public class SwitchTrackTextDrawable extends Drawable {
private final Context mContext;
private final String mLeftText;
private final String mRightText;
private final Paint mTextPaint;
public SwitchTrackTextDrawable(@NonNull Context context,
@StringRes int leftTextId,
@StringRes int rightTextId) {
mContext = context;
// Left text
mLeftText = context.getString(leftTextId);
mTextPaint = createTextPaint();
// Right text
mRightText = context.getString(rightTextId);
}
private Paint createTextPaint() {
Paint textPaint = new Paint();
//noinspection deprecation
textPaint.setColor(mContext.getResources().getColor(android.R.color.white));
textPaint.setAntiAlias(true);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setTextAlign(Paint.Align.CENTER);
// Set textSize, typeface, etc, as you wish
return textPaint;
}
@Override
public void draw(Canvas canvas) {
final Rect textBounds = new Rect();
mTextPaint.getTextBounds(mRightText, 0, mRightText.length(), textBounds);
// The baseline for the text: centered, including the height of the text itself
final int heightBaseline = canvas.getClipBounds().height() / 2 + textBounds.height() / 2;
// This is one quarter of the full width, to measure the centers of the texts
final int widthQuarter = canvas.getClipBounds().width() / 4;
canvas.drawText(mLeftText, 0, mLeftText.length(),
widthQuarter, heightBaseline,
mTextPaint);
canvas.drawText(mRightText, 0, mRightText.length(),
widthQuarter * 3, heightBaseline,
mTextPaint);
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
关于android - 我可以在一个开关中同时显示 textOn 和 textOff 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20531538/
我有一个 Switch,可以在男性和女性之间进行选择。 所以我将 textOff 和 textOn 分别设置为“男性”和“女性”,但根据开关位置,只显示男性或女性之一。 如何让它同时显示男性和女性?
我有一个 UI,我在其中添加了一个 Switch 小部件(在 API 14 中引入)。XML 看起来像这样: 您可以看到我指定了textOn 和textOff。所以我希望开关小部件上有这段文字。 然
更改 Switch 的 android:textOn 和 android:textOff 属性在我的 S3 上不起作用。我开关上的标签总是显示“ON” 和“OFF”。 Switch Documenta
我正在尝试制作一个带有开/关开关的 ListView 。我找到了这个简单的代码,但问题是它对我不起作用。 是的,它显示了一个开关,但没有显示文本(振动开/关)。只显示一个可以切换的圆圈。我想发布屏幕
我有一个 SwitchCompat,其中包含我通过 SwitchCompat.setText() 设置的文本。 在我的例子中,这个文本只是“开”或“关”。 问题是 Android TalkBack 将
A ToggleButton切换选中状态时,小部件会更改大小。例如,如果 textOn 值为“true”并且 textOff 值为“不确定稍后再给我打电话”,选中的状态切换会导致按钮宽度发生显着变化。
Lollipop (5.0) 中开关小部件的行为发生了变化。 targetSdkVersion=19 时渲染的开关: targetSdkVersion=21 时渲染的开关: 请注意,Andr
我正在尝试更改 Android 中切换按钮上的默认打开和关闭文本。我知道如何在 xml 中执行此操作。我的问题是如何在代码中以编程方式实现这一点。 谁能给点建议?非常感谢。 最佳答案 使用 Toggl
我是一名优秀的程序员,十分优秀!