小的补充:当TextInputLayout / EditText未聚焦时,不在聚焦状态与非聚焦状态之间,我需要一种方法
我正在寻找一种方法来更改textColorHint
的{{1}}属性仅当TextInputLayout
中存在文本时(直接来自XML)
如果我使用该属性TextInputEditText
,则即使android:textColorHint="@color/black"
为空,它也会更改提示颜色。
是否可以在两种状态下为提示设置两种不同的颜色? 我添加了一些图片以更好地解释
后脚本:是的,在这个示例中,我可以使用两种以上的不同颜色,但是无论如何它应该是可以理解的:P
答案 0 :(得分:1)
假设您采用两种颜色,假设文本为空时为 color1 ,填充文本时为 color2 ,请尝试以下方法。
填充文本时
<style name="TextAppearance.App.TextInputLayout_filled" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/color2</item>
<item name="android:textSize">@dimen/text_size_12</item>
</style>
文本为空时
<style name="TextAppearance.App.TextInputLayout_empty" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/color1</item>
<item name="android:textSize">@dimen/text_size_12</item>
</style>
主题
<style name="TextLabel" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/color1</item>
<item name="android:textSize">@dimen/text_size_16</item>
</style>
TextInputLayout的XML
<android.support.design.widget.TextInputLayout
android:id="@+id/til_first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabel"
app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout_filled">
<android.support.design.widget.TextInputEditText
android:id="@+id/edt_first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/first_name_caps"
android:imeOptions="actionNext"
android:maxLines="1"
android:nextFocusForward="@+id/til_last_name"
android:singleLine="true"
android:textColor="@android:color/black"/>
</android.support.design.widget.TextInputLayout>
和代码
edt_first_name.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (edt_first_name.getText().toString().length() > 0){
til_first_name.setHintTextAppearance(R.style.TextAppearance_App_TextInputLayout_filled);
}else {
til_first_name.setHintTextAppearance(R.style.TextAppearance_App_TextInputLayout_empty);
}
}
});
答案 1 :(得分:0)
使用样式
<style name="TextInputLayout" parent="@android:style/TextAppearance">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/color_hint</item>
<item name="android:textColor">@color/color_black</item>
<item name="android:fontFamily">@font/helveticaneue</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/color_hint</item>
<item name="colorControlNormal">@color/color_hint</item>
<item name="colorControlActivated">@color/color_hint</item>
<item name="colorControlHighlight">@color/color_hint</item>
</style>
在xml中使用此样式
<android.support.design.widget.TextInputLayout
android:id="@+id/layoutFirstName"
style="@style/TextInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_8sdp"
app:hintTextAppearance="@style/TextInputStyle.Hint">
<android.support.design.widget.TextInputEditText
android:id="@+id/editFirstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/first_name"
android:imeOptions="actionDone"
android:inputType="text"
android:importantForAutofill="noExcludeDescendants"
android:theme="@style/InputTextEditTextNew" />
</android.support.design.widget.TextInputLayout>
答案 2 :(得分:0)
对于TextInputEditText
,请使用以下属性设置提示颜色为空:
android:textColorHint="@color/yourcolor"
如果不为空,则必须使用以下样式设置浮动提示的颜色:
<style name="TextInputLayoutStyle" parent="TextAppearance.AppCompat">
<item name="colorControlNormal">@color/colornormalcolor</item>
<item name="colorControlActivated">@color/anothercolor</item>
</style>
并在TextInputLayout
xml中使用它:
android:theme="@style/TextInputLayoutStyle"
答案 3 :(得分:0)
经过一些研究,我们似乎无法仅通过xml布局实现我们正在寻找的。为此,我们绝对需要自定义set.seed(1)
df <- data.frame(
x = sample(LETTERS[1:10]),
y = rnorm(10),
z = runif(10)
)
start <- c("C", "E", "F")
df2 <- df %>%
mutate(start = x %in% start,
group = cumsum(start))
split(df2, df2$group)
。然后可以在需要的任何地方简单地在xml布局文件中使用它。
这是自定义的TextInputLayout
TextInputLayout