我想在Android中的按钮点击事件中将TextView转换为EditText,反之亦然。我不知道如何实现,请帮忙提供解决方案。
敬礼, Rajapandian.K
敬礼, Rajapandian.K
最好使用ViewSwitcher
...
<ViewSwitcher
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_switcher"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/clickable_text_view"
android:clickable="true"
android:onClick="TextViewClicked"
android:text="@string/some_value" />
<EditText
android:id="@+id/hidden_edit_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/some_value" />
</ViewSwitcher>
...
然后你可以通过以下方式切换视图
public void TextViewClicked() {
ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.my_switcher);
switcher.showNext(); //or switcher.showPrevious();
TextView myTV = (TextView) switcher.findViewById(R.id.clickable_text_view);
myTV.setText("value");
}
也许你可以准备两个元素并且控制它们的可见性。当按钮被点击时,获取当前可见元素的文本,将其应用于不可见元素,并交换它们的可见性。
我从未尝试过,但你可以(可能)使用EditText并将背景设置为TextView的背景。然后,在onfocus
更改时,您可以根据任何给定时刻想要查看的内容简单地交换背景。我会尝试实现它并看看它是否有效。
我认为最好的做法是实际上使用 Framelayout 的概念。
这样原始布局就会看起来像
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
.
.
.
</Linearlayout>
将它放在 FrameLayout 中,像这样。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
.
.
.
</Linearlayout>
<!-- The Magic is here -->
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
这里的LinearLayout将包含所有的EditText视图。 同时记得将EditText视图的背景设置为空。
像这样
<EditText
android:layout_width="fill_parent"
android:layout_height="50dp"
android:id="@+id/editInp"
android:hint="@string/hello_world"
android:background="@null"
android:singleLine="true"
android:inputType="textCapWords"/>
或者
<EditText
android:layout_width="fill_parent"
android:layout_height="50dp"
android:id="@+id/editInp"
android:hint="@string/hello_world"
android:background="@android:drawable/transparent"
android:singleLine="true"
android:inputType="textCapWords"/>
switcher
声明中添加额外的空格。 - ivan.mylyanyk