EditText, который выглядит как TextView внутри ListView - PullRequest
1 голос
/ 26 января 2012

Я разрабатываю приложение , где пользователь может редактировать данные в ListView. Я хочу иметь EditText внутри этого ListView, этот текст редактирования должен вести себя как TextView, но когда пользователь щелкает по нему, он должен выглядеть как EditText, Как я могу достичь этой функциональности?

На самом деле EditText внутри ListView выглядит некрасиво, и я хочу, чтобы EditText выглядел как TextView по умолчанию, но когда пользователь пытается редактировать данные, он должен выглядеть как EditText.

Я надеюсь, что мой вопрос понятен, если нет, пожалуйста, спросите.

Ответы [ 6 ]

1 голос
/ 26 января 2012

Следующие файлы, которые я использовал в своем приложении.

main.xml в папке макета

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"    
    android:orientation="vertical" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
    <EditText android:layout_width="fill_parent"
        android:padding="5dip"
        android:layout_height="wrap_content"
        android:textColor="#00f"
        android:textSize="20dip"
        android:background="@drawable/bg" />    
    <EditText android:layout_width="fill_parent"
        android:padding="5dip"
        android:layout_height="wrap_content"
        android:textColor="#00f"
        android:textSize="20dip"
        android:background="@drawable/bg" />
</LinearLayout>

myshape.xml в режиме рисованияпапка

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">   
    <solid   android:color="#fff"/> 
    <corners android:radius="2dip" />   
    <stroke android:width="2dip"
        android:color="#ff4500" />
</shape>

bg.xml в папке для рисования

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >    
    <item android:state_enabled="true"        
        android:state_focused="true"                        
        android:drawable="@drawable/myshape"/>    
</selector>

файл Java

public class EditTextSelector extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
0 голосов
/ 21 сентября 2017
android:cursorVisible="false"
android:background="@android:color/transparent"
0 голосов
/ 26 января 2012

Используйте setCursorVisible (false), чтобы скрыть курсор и щелкнуть текст редактирования. SetCursorVisible (true). это, также установите цвет фона на белый от edittext

0 голосов
/ 26 января 2012

Вы можете предложить пользователю ввести с помощью AlertDialog.

0 голосов
/ 26 января 2012

ну, я бы порекомендовал использовать textview .. и при щелчке по нему он поменяется на editText (добавить View / removeView) в родительском ... и при изменении фокуса он вернется обратно к textview с новыми изменениями .. Второе решениеиспользовать всплывающее диалоговое окно для редактирования с кнопкой «Готово» для отправки и возврата, чтобы вернуться к списку.третье решение для изменения стиля editText с помощью:

editText.setBackgroundResource(R.layout.writemode);
//later after this item loses focus, use:
editText.setBackgroundResource(R.layout.readmode);
0 голосов
/ 26 января 2012

Используйте селектор для EditText для создания различных состояний. Если он находится в режиме ожидания, задайте в качестве фона нормальный цвет для рисования и если он сфокусирован, используйте 9-патчовый PNG-файл, который напоминает реальный фон EditText.

Надеюсь, это поможет вам. Если вы не знаете, как использовать селектор, не стесняйтесь спрашивать меня.

Образцы снимков экрана

Я использую 1 представление TextVuew и 2 представления EditText в своем приложении, проверьте снимки экрана ниже, чтобы узнать, как EditText будет выглядеть в соответствии с вашими требованиями. Если они вам нравятся и это действительно необходимо, тогда я отправлю код здесь.

Начальный экран

enter image description here

При получении ввода для 1-го EditText

enter image description here

При получении ввода для второго EditText

enter image description here

...