【发布时间】:2015-06-22 21:32:51
【问题描述】:
所以我有一个带有 EditText 和浮动提示的片段。问题是当我启动片段并且 EditText 已经有一个值时,浮动提示会在提示开始浮动之前短暂覆盖文本。如何使浮动提示在我启动片段而不是覆盖文本时开始浮动?
图片是提示覆盖文字时EditText的样子
编辑: 好吧,看起来我提出问题的方式有点令人困惑。 所以我有一个 RecyclerView,它是一个列表,当按下一个列表项时,它会启动这个片段(来自http://imgur.com/a/tdjQv 的第一张图片让我们称之为 infoFragment)。用户在 infoFragment 中输入标题和详细信息并保存数据。现在,每当用户返回相同的 infoFragment 时,他们之前输入的数据应该已经存在,就像 imgur 相册中的第二张图片一样。信息已保存,但当 infoFragment 仅启动一秒钟时,UI 看起来像成像器相册中的第三张图片,然后看起来像第二张图片。
这是我的片段布局 xml: mExercise 是类中的一个对象,其中包含标题和详细信息的值
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar">
</include>
<android.support.design.widget.TextInputLayout
android:id="@+id/title_textInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<EditText
android:id="@+id/exercise_title"
style="@style/Widget.AppCompat.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Title"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/details_textInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<EditText
android:id="@+id/exercise_details"
style="@style/Widget.AppCompat.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Details"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
这是我的片段的 onCreateView 方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_exercise, parent, false);
mToolbar = (Toolbar)v.findViewById(R.id.toolbar);
((AppCompatActivity)getActivity()).setSupportActionBar(mToolbar);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle(" ");
mTitleField = (EditText)v.findViewById(R.id.exercise_title);
if(mExercise.getTitle() != null) {
mTitleField.setText(mExercise.getTitle());
}
mTitleField.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mExercise.setTitle(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
mDescriptionField = (EditText)v.findViewById(R.id.exercise_details);
if(mExercise.getDetails() != null) {
mDescriptionField.setText(mExercise.getDetails());
}
mDescriptionField.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mExercise.setDetails(s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
return v;
}
【问题讨论】:
-
你用什么做浮动提示? IOW,代码,请。
-
输入文本时提示应该消失。不要使用 TextView 作为提示,通过 xml 中的
android:hint="[your_hint_string]"使用 EditText 的提示属性
标签: android android-edittext material-design