androidtextviewandroid-listviewandroid-edittextinline-editing

EditText that looks like TextView inside a ListView


I am developing an application where the user can edit the data in the ListView. I want to have an EditText inside that ListView, this edittext should behave like TextView but when the user clicks it it should look like EditText, How can i achieve this functionality?

Actually the EditText inside the ListView looks ugly & i want that the EditText should look like a TextView bydefault but when the user try to Edit the data then it should look like the EditText.

I hope that my question is clear if not please ask.


Solution

  • The below files I used in my app.

    main.xml in layout folder

    <?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 in drawable folder

    <?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 in drawable folder

    <?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 file

    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);
        }
    }