2010-11-18 2 views

ответ

9

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

+3

@MarvinLabs: +1, он был быстрее;) –

4

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

+2

@Rich: Хорошо, вы быстрее :-) –

0

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

67

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

Я честно думаю, что из все они, этот ответ был лучшим. Это намного проще. Мне интересно. Когда это следует использовать? Я прочитал документ, и он говорит для типа анимационного типа. Но в этом случае имеет смысл использовать его. Так есть ли причина не использовать его в этом случае? – Andy

+0

View switcher работает красиво, и у вас есть возможность легко добавлять анимацию. – Patrick

+1

Приятно, но добавьте лишнее место в объявлении 'switcher' –

0

То, что я думаю, что лучше всего на самом деле использовать концепцию Framelayout.

Такая, что оригинальная планировка выглядит

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
. 
. 
. 
</Linearlayout> 

поместите его в 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"/> 
Смежные вопросы