gpt4 book ai didi

android - 如何在同一 Activity 中为多个编辑文本设置不同的文本选择相关颜色?

转载 作者:行者123 更新时间:2023-11-29 01:06:56 25 4
gpt4 key购买 nike

背景

在我开发的一个大型应用程序中,有一个具有某种颜色背景的 Activity,这与我们为插入符号和文本选择句柄以及底线设置的非常相似。这就是为什么我将“colorControlActivated”颜色设置为白色(设计师决定使用这种颜色)。

问题

Activity 也有一个对话框,它有一个 EditText,但没有这个特殊的背景,所以看起来好像 EditText 的插入符号、文本选择句柄和底线 - 都不存在。

那是因为“colorControlActivated”是在 Activity 的样式中设置的,正如我所注意到的,不能设置为特定的 EditText。

如果我不设置它,对话框中的 EditText 看起来没问题,但其他地方(有背景)的就不行了。

这里为了让这个问题简单化,我在同一个 Activity 布局上只询问了大约 2 个 EditText。

所以这是这个问题的2张截图:

默认选择颜色:

enter image description here

白色选择颜色:

enter image description here

我尝试过的

我尝试为每个 EditText 设置不同的样式,但我失败了。我还尝试使用 ContextThemeWrapper 手动膨胀 EditText(我在原来的大型应用程序中这样做)和不同的样式,但它似乎也没有用。我还尝试从应用程序上下文创建 LayoutInflater。

这些都没有帮助。

这是示例项目代码,我尝试对其执行测试:

activity_main.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"
tools:context="com.example.user.myapplication.MainActivity">


<FrameLayout
android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#008678"
android:paddingBottom="10dp" android:paddingTop="10dp">

<EditText
android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center"
android:hint="put text here"
android:text="some text to select in similar color of default selection color"/>

</FrameLayout>

<FrameLayout
android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f4f4f4"
android:paddingBottom="10dp" android:paddingTop="10dp">

<EditText
android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center"
android:hint="put text here" android:text="some text to select in almost white color background"/>

</FrameLayout>
</LinearLayout>

styles.xml

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorControlActivated">#fff</item>
</style>

</resources>

MainActivity 除了默认的东西(setContentView...)没有什么特别的。

请注意,实际上,对话框的背景是白色的,因此插入符号等根本不明显。我只是在这里更改它,以便您看到问题。

问题

  1. 如何让 2 个 EditText 的插入符号(以及文本选择句柄和底线)颜色不同?

  2. 回到原来的代码(这里没有写),有没有一种简单的方法让它也适用于对话框,这样 EditText 的插入符颜色就会不同于承载它的 Activity?

最佳答案

使用spans .

例子:

final SpannableStringBuilder sb = new SpannableStringBuilder("your text here");

// Span to set text color to some RGB value
final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(158, 158, 158));

// Span to make text bold
final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD);

// Set the text color for first 4 characters
sb.setSpan(fcs, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

// make them also bold
sb.setSpan(bss, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE);

yourTextView.setText(sb);

编辑: 这里描述了一个很好的解决方案:https://stackoverflow.com/a/4897379/1378564

关于android - 如何在同一 Activity 中为多个编辑文本设置不同的文本选择相关颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com