您好我正在尝试使用viewswitcher
在TextView
和EditText
之间来回切换。我的观点从edittext
切换为textview
。但不会改回来。这是我的xml
:
<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/noteItemVS"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<TextView
android:id="@+id/noteItemTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:text="textview"
android:textAlignment="center" />
<EditText
android:id="@+id/noteItemEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="edittext"
android:textAlignment="center" />
</ViewSwitcher>
我的切换代码是:
protected void switchViews(NoteItem note) {
ViewSwitcher switcher = (ViewSwitcher) context.findViewById(R.id.noteItemVS);
View switchCheck = switcher.getCurrentView();
if (switchCheck instanceof EditText) {
EditText l = (EditText)switchCheck ;
String x = l.getText().toString();
Log.e("tree",x);
if (!x.isEmpty()) {
switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.noteItemTextView);
myTV.setText(x);
}
}
; if (switchCheck instanceof TextView) {
TextView l = (TextView) switchCheck;
String x = l.getText().toString();
switcher.showNext();
EditText myEditText = (EditText) switcher.findViewById(R.id.noteItemEditText);
myEditText.setText(x);
}
}
答案 0 :(得分:0)
通过摆脱视图切换器,我能够解决问题。只需使用View.Gone和View.Visibile
即可protected void switchViews(NoteItem note) {
if (context.findViewById(R.id.noteItemTextView).getVisibility()==View.GONE) {
EditText editText = (EditText) context.findViewById(R.id.noteItemEditText);
String x = editText.getText().toString();
editText.setVisibility(View.GONE);
TextView textView = (TextView) context.findViewById(R.id.noteItemTextView);
textView.setVisibility(View.VISIBLE);
} else {
TextView textView = (TextView) context.findViewById(R.id.noteItemTextView);
String x = textView.getText().toString();
textView.setVisibility(View.GONE);
EditText editText = (EditText) context.findViewById(R.id.noteItemEditText);
editText.setText(x);
editText.setVisibility(View.VISIBLE);
}
}
答案 1 :(得分:0)
这是因为解释器正在遍历两个if语句,默认情况下,后者会覆盖forment语句的值。 尝试以下代码,它肯定会起作用。
protected void switchViews() {
ViewSwitcher switcher = (ViewSwitcher)findViewById(R.id.noteItemVS);
View switchCheck = switcher.getCurrentView();
if (switchCheck instanceof EditText) {
EditText l = (EditText)switchCheck;
String x = l.getText().toString();
Log.e("tree",x);
if (!x.isEmpty()) {
switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.noteItemTextView);
myTV.setText(x);
}
}else{
TextView l = (TextView) switchCheck;
String x = l.getText().toString();
switcher.showNext();
EditText myEditText = (EditText) switcher.findViewById(R.id.noteItemEditText);
myEditText.setText(x);
}
}