android - 如何在不更改“AppTheme”中的“colorAccent”的情况下更改TextInputLayout和光标的浮动标签颜色
问题描述
这个问题与我将在下面具体提及的另外两个问题有关。不同之处在于,我特别要求一种在不使用 base 的情况下更改颜色的方法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
是,不需要特定主题,因为我得到了相同的结果,无论有没有它。仅设置colorAccent
inAppTheme
就足够了。这可行,但不一定是我想要/需要的。
在第二个相关问题中,人们建议再次修改AppTheme
and 设置colorAccent
(和其他属性)。
但是,我认为这个解决方案并不正确/令人满意。应该有一种方法可以在不改变整个应用程序的样式的情况下专门更改一种颜色,提出第二个问题的人也在他/她的一个评论中批评了这一点。
所以,我在这里特别寻找的是一种解决方案,用 XML 或以编程方式,专门更改+ Combo的浮动提示/标签和光标的颜色。基本上与设置时相同的行为。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>
推荐阅读
- r - 如何计算文本字符串变量中的单词数并将其粘贴为表格中的列?
- android - 使用 NavController 时如何使用 newInstance() 创建片段?
- python-3.x - 使用 Python 抓取空气表
- ios - 如何在swift 4中将多个数组元素索引值作为Int返回
- java - Apache poi 将单元格值转换为对象
- python - 硒刮不正确的标签
- java - 从 API 获取数据到字符串
- python-3.x - NumPy 或 SciPy 的明显兼容性问题(预期来自 C 标头的 192,来自 PyObject 的 216)
- mysql - 为最新记录添加附加值(但显示所有记录)
- java - 将非递归方法更改为递归方法