如何更改TextInputLayout和光标的浮动标签颜色,而不更改"AppTheme"中的&quo



这个问题与我将在下面具体列举的另外两个问题有关。不同之处在于,我特别要求一种在不使用基础AppTheme的情况下更改颜色的方法。

在第一个相关问题中,建议的解决方案包括设置

<item name="colorAccent">@color/Color Name</item>AppTheme

但是,它也说要专门为TextInputLayout制作一个主题/样式,看起来像这样:

<style name="TextLabel" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/Color Name</item> 
<item name="android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/Color Name</item>
<item name="colorControlNormal">@color/Color Name</item>
<item name="colorControlActivated">@color/Color Name</item>
</style>

因此,colorAccent设置了两次。我尝试了这个,得出的结论是,TextInputLayout的特定主题是不必要的,因为我得到了相同的结果,无论有没有它。只需在AppTheme中设置colorAccent就足够了。这有效,但不一定是我想要/需要的。

在第二个相关问题中,人们再次建议修改AppTheme和设置colorAccent(以及其他属性)。

但是,我觉得这个解决方案不合适/令人满意。应该有一种方法可以在不改变整个应用程序样式的情况下专门更改一种颜色,提出第二个问题的人也在他/她的评论中批评了这一点。

因此,我在这里特别寻找的是XML或编程方式的解决方案,专门更改TextInputLabel+TextInputEditText组合的浮动提示/标签和光标的颜色。基本上与我在设置colorAccent时得到的行为相同

有没有办法做到这一点,或者SDK开发人员是否认真地通过设置colorAccent才有可能?

PS 我意识到这可能适用于制作一个新主题,从AppTheme继承并将其设置为我想要具有特定颜色的活动。但是,正如我所说,这不是我想要的。

创建一个自定义样式,如下所示:

<style name="myInputText">
<item name="android:textColor">@color/myColor</item>
<item name="android:textSize">@dimen/text_size</item>
...
</style>

现在,您可以直接在TextInputLayout中使用它,无需提供任何父级样式或更改您的应用程序主题。

<android.support.design.widget.TextInputLayout
android:textColorHint="@color/myColor" 
app:hintTextAppearance="@style/myInputText"
android:layout_width="match_parent"
android:layout_height="50dp">

编辑

这只会更改浮动标签的颜色,而不会更改光标的颜色。要同时更改光标颜色,您需要创建一个可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:height="10dp"
android:width="2dp"/>
<solid android:color="@color/myColor"/>
</shape>

并将其添加到您用于TextInputEditText的样式中,而不是TextInputLayout

<style name="Settings.TextInputEditText">
...
<item name="android:textCursorDrawable">@drawable/cursor</item>
</style>

更改您想要在分辨率/颜色中着色 - 以及您喜欢的颜色定义 3 种颜色,您可以更改效果

您可以尝试为所需的视图设置colorAccent,但...像这样:

<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppThemeInputLayout" />

然后,在styles.xml

<style name="AppThemeInputLayout" parent="AppTheme">
<item name="colorAccent">#FF0000</item>
</style>

我想通过这种方式,您可以仅更改特定视图(而不是整个应用程序)的colorAccent

让我知道这是否适合您..否则,我将删除此答案。

相关内容

  • 没有找到相关文章

最新更新