我想在EditText(在TextInputLayout中)中使用java设置提示。
用于设置提示的代码:
Select a.id, a.name, b.name as fav from table a inner join table b on a.f_id = b.id
但是即使在关注edittext时,提示也会显示两次(也在edittext内)。
如果有人面对并找到了一些解决方法,请告诉我
当editText聚焦时
当editText未聚焦时
编辑[2015年7月10日]:
aET = (EditText) findViewById(R.id.aET);
aET.setHint("h?");
答案 0 :(得分:36)
出现此问题的原因是xml中的提示传递给TextInputLayout,因此它可以显示为浮动提示。但是当你以编程方式设置它时,提示被设置为EditText,然后产生两个提示(一个来自xml,它是一个浮动提示,一个是以编程方式设置的,是一个正常的EditText提示)。如果要更改浮动提示,则必须在TextInputLayout上设置提示。
您的代码将如下所示:
aTIL = (TextInputLayout) findViewById(R.id.aTIL);
aTIL.setHint("h?");
答案 1 :(得分:12)
我也遇到过这个问题。
当我需要更新提示时,我(错误地)在EditText
和TextInputLayout
上都这样做了,这导致了模糊。
解决方案是不调用EditText.setHint()
,而只调用TextInputLayout.setHint()
答案 2 :(得分:11)
我找到了解决方案!
在EditText中添加
android:textColorHint="@android:color/transparent"
在代码中设置EditText的提示
aET.setHint("h?");
隐藏editText中的提示,并显示TextInputLayout中的提示。
编辑:
其他解决方案(最佳)
使用新版本的android:design
更新Graddlecompile 'com.android.support:design:22.2.1'
答案 3 :(得分:2)
您可以使用两个提示文字。一个用于TextInputLayout,另一个用于其中的编辑文本.Below是引用:
<android.support.design.widget.TextInputLayout
style="@style/editText_layout"
android:id="@+id/entryScreenProduction_editText_percentCompleted_layout"
android:hint="%Completed">
<EditText
android:id="@+id/entryScreenProduction_editText_percentCompleted"
style="@style/editTextNotes"
android:gravity="center_vertical|top"
android:inputType="numberDecimal"
android:textAlignment="viewStart"
android:hint="0.0"/>
</android.support.design.widget.TextInputLayout>
为了避免上述丑陋的用户界面,你必须从程序中控制它。只有当字段有焦点时才设置EditText的提示文本,否则删除提示文本。
android:hint="0.0"
从布局xml文件中删除上面的行,并执行以下操作:
m_editText_completed = (EditText) findViewById(R.id.entryScreenProduction_editText_percentCompleted);
m_editText_completed.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(b){
m_editText_completed.setHint("0.0");
}
else {
m_editText_completed.setHint("");
}
}
});
我希望这能解决你的问题。上帝速度!!!
答案 4 :(得分:1)
首先编译依赖项 编译'com.rengwuxian.materialedittext:library:2.1.3'
在xml
中添加<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/etId"
android:layout_width="match_parent"
android:layout_height="70dip"
android:hint="Hint goes here"
android:textColor = "#000000"
android:textSize="15sp"
app:met_accentTypeface="fonts/yourcustomfonts.ttf"
app:met_floatingLabel="normal"
app:met_floatingLabelTextColor="#ff0000"
app:met_floatingLabelTextSize="15sp"
app:met_hideUnderline="true"
app:met_textColorHint="#ff00ff"
app:met_typeface="fonts/yourcustomfont.ttf"/>
添加xmlns:app =“http://schemas.android.com/apk/res-auto”
答案 5 :(得分:0)
以编程方式简单地使用它为我工作
<style name="TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/colorPrimaryDark</item>
<item name="android:textColorHint">@color/colorPrimaryDark</item>
<item name="android:textSize">23sp</item>
</style>
TextInputLayout til = new TextInputLayout(this);
til.setHint("hai);
til.setHintTextAppearance(R.style.TextInputLayout);
您可以自定义样式,如下所示......
org.json
答案 6 :(得分:0)
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/password">