Подтвердить что ты не робот

Как преобразовать TextView в EditText в android?

Я хочу преобразовать TextView в Edit Text и наоборот в событие нажатия кнопки в android. Я не знаю, как это сделать, пожалуйста, помогите, если кто-нибудь знает решение.

С уважением, Rajapandian.K

4b9b3361

Ответ 1

Лучше всего использовать 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");
}

Ответ 2

Возможно, у вас есть один из них и переключите их видимость. Когда кнопка нажата, возьмите текст видимого, примените его к невидимому, а затем поменяйте видимость.

Ответ 3

Вы можете иметь как в своем макете, так и всегда показывать только один из них. Когда значение EditText изменяется, обновите скрытый TextView, чтобы синхронизировать их.

Ответ 4

Я никогда не пробовал, но вы можете (возможно) использовать EditText и установить фон в TextView. Затем onfocus change вы можете просто поменять фоны на основе того, что вы хотите увидеть в любой момент. Я попытаюсь реализовать его и посмотреть, будет ли он работать

Ответ 5

Я думаю, что лучше всего использовать концепцию 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 View. Также не забудьте сделать фон EditText View null.

Подобно этому

<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"/>