如何更改用户输入的编辑文本的颜色?

Posted

技术标签:

【中文标题】如何更改用户输入的编辑文本的颜色?【英文标题】:How can I change the color of my edit text which is entered by user? 【发布时间】:2021-06-24 11:55:19 【问题描述】:

我创建了一个注册页面,现在我选择提示颜色蓝色我想更改在编辑文本中输入的文本颜色请告诉我如何更改文本颜色

这是我的 XML 文件的代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".Signup"
android:background="@color/purple_500">

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_
    android:layout_
    android:layout_marginTop="80dp"
    android:background="@drawable/linear_round"
    android:orientation="vertical"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</LinearLayout>

<TextView
    android:layout_
    android:layout_
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:text="Please Signup..."
    android:textColor="@color/white"
    android:textStyle="bold"
    android:textSize="29sp"
    android:gravity="center"
    android:layout_marginTop="16dp"
    android:id="@+id/textView">
</TextView>

<EditText
    android:layout_
    android:layout_
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:textColor="@color/black"
    android:hint="Enter your name"
    android:layout_marginTop="250dp"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:gravity="center"
    android:textColorHint="@color/purple_500"
    android:id="@+id/name"/>

<EditText
    android:id="@+id/pass"
    android:layout_
    android:layout_
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:gravity="center"
    android:hint="Enter your password"
    android:inputType="textPassword"
    android:textColor="@color/black"
    android:textColorHint="@color/purple_500"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/name" />

<EditText
    android:id="@+id/email"
    android:layout_
    android:layout_
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:gravity="center"
    android:hint="Enter your valid e-mail"
    android:inputType="textEmailAddress"
    android:textColor="@color/black"
    android:textColorHint="@color/purple_500"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/pass" />

<EditText
    android:id="@+id/number"
    android:layout_
    android:layout_
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:gravity="center"
    android:hint="Enter your cell number"
    android:inputType="phone"
    android:textColor="@color/black"
    android:textColorHint="@color/purple_500"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/email" />

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/submit"
    android:layout_
    android:layout_
    android:layout_centerInParent="true"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/number"
    android:layout_marginBottom="100dp"
    app:lottie_autoPlay="true"
    app:lottie_loop="true"
    app:lottie_rawRes="@raw/submit" />

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/trial"
    android:layout_
    android:layout_
    android:layout_centerInParent="true"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/submit"
    app:lottie_autoPlay="true"
    app:lottie_loop="true"
    app:lottie_rawRes="@raw/trial" />

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/signup_animation"
    android:layout_
    android:layout_
    android:layout_centerInParent="true"
    app:layout_constraintBottom_toTopOf="@+id/name"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="70dp"
    app:lottie_autoPlay="true"
    app:lottie_loop="true"
    app:lottie_rawRes="@raw/signup" />
</androidx.constraintlayout.widget.ConstraintLayout>

如何在我的文本视图上添加选取框效果?我可以让文本视图从右向左滚动吗?

【问题讨论】:

查看***.com/questions/2182578/marquee-text-in-android 【参考方案1】:

如果TextView 填满整个宽度你需要添加这些代码行

<TextView
    .
    .
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    />

也不要忘记为TexrtView 设置选择如下

textview.setSelected(true);

如果TextView 没有填满宽度,唯一的办法就是调用这个方法并将TextView 传递给它。

科特林

    fun addMarquee(textView: TextView) 
    textView.viewTreeObserver.addOnGlobalLayoutListener(object :
        ViewTreeObserver.OnGlobalLayoutListener 
        override fun onGlobalLayout() 
            val pixels = textView.measuredWidth - 1
            val params = textView.layoutParams
            params.width = pixels
            textView.layoutParams = params
            textView.isSelected = true
            textView.ellipsize = TextUtils.TruncateAt.MARQUEE
            textView.isSingleLine = true
            textView.marqueeRepeatLimit = -1
            textView.viewTreeObserver.removeOnGlobalLayoutListener(this)
        
    )

Java

public void addMarquee(TextView textView) 
    textView.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() 
        @Override
        public void onGlobalLayout() 

            int pixels = textView.getMeasuredWidth() - 1;
            ViewGroup.LayoutParams params = textView.getLayoutParams();
            params.width = pixels;
            textView.setLayoutParams(params);
            textView.setSelected(true);
            textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
            textView.setSingleLine(true);
            textView.setMarqueeRepeatLimit(-1);
            textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        
    );

注意:此方法仅在 textView 宽度为 wrap_content 时有效。

【讨论】:

谢谢,但这是 kotlin 代码,我正在使用 java 我将在接下来的几分钟内编辑答案并添加 java 代码。 已更新。只需将addMarquee(findViewById(R.id.text)); 添加到您的片段活动的onCreate 如果可行,请接受答案。【参考方案2】:

textColor 属性改变用户输入的文本颜色。

android:textColor="@color/black"

HorizontalScrollView有一个chid视图,可以水平滚动。

有很多方法可以移动视图。

使用关键字搜索 move view animation androidmove view programmatically android

【讨论】:

我不想添加滚动视图我只想添加选框效果这个有什么属性吗??? 我想我误解了滚动。动画不像css或html那么容易。 这个怎么样:***.com/questions/14141039/… 我想自动从右到左滚动我​​的文本。你说得对,在 html 或 css 中更容易

以上是关于如何更改用户输入的编辑文本的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

Android TextView中的下划线和更改文本颜色[重复]

画布线性渐变采用另一个输入类型颜色字段的值

Android - 如何更改 TextInputLayout(材料组件)中的文本颜色?

如何仅更改 javafx TextField 中最后一个字符的颜色

如何更改文本输入 Flex 4 的文本光标颜色?

动态改变文本字段的文本颜色