所以我有一个带有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;
}
答案 0 :(得分:1)
尝试在android:hint
而不是TextInputLayout
EditText
<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"
android:hint="Title">
<EditText
android:id="@+id/exercise_title"
style="@style/Widget.AppCompat.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
答案 1 :(得分:0)
应修复以便编译&#39; com.android.support:design:23.0.1&#39;