在ListView中看起来像TextView的EditText

时间:2012-01-26 12:09:14

标签: android textview android-listview android-edittext inline-editing

我是developing an application,用户可以在ListView中修改数据。我希望在ListView中有一个EditText,这个edittext应该像TextView一样,但是当用户点击它时,它应该看起来像EditText,我该如何实现这个功能?

实际上ListView中的EditText看起来很丑陋。我希望EditText看起来像TextView bydefault,但是当用户尝试编辑数据时,它应该看起来像EditText。

我希望我的问题很清楚,如果不是请问。

6 个答案:

答案 0 :(得分:1)

我在我的应用中使用的以下文件。

布局文件夹中的

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

答案 1 :(得分:0)

使用选择器进行EditText创建不同的状态。如果处于空闲状态,则将正常颜色绘制为背景,如果聚焦,则使用9补丁PNG drawable,类似于真正的EditText背景。

我希望它可以帮到你。如果您不知道如何使用选择器,请随时问我。

示例ScreenShots

我在我的应用中使用了1个TextVuew和2个EditText视图,请查看下面的屏幕截图以了解具体方法 EditText将根据您的要求显示。如果你喜欢它们并且它实际上是必需的,那么我在这里发布代码。

初始屏幕

enter image description here

在第一个EditText中输入

enter image description here

获取第二个EditText的输入

enter image description here

答案 2 :(得分:0)

好吧,我建议使用textview ..当点击它时,它将交换到父文件中的editText(添加View / removeView)。当焦点更改时,它将恢复为textview并进行新的更改。第二个解决方案使用弹出对话框进行编辑,使用完成按钮提交并返回以返回列表。用于改变editText样式的第三种解决方案:

editText.setBackgroundResource(R.layout.writemode);
//later after this item loses focus, use:
editText.setBackgroundResource(R.layout.readmode);

答案 3 :(得分:0)

您可以提示用户输入AlertDialog。

答案 4 :(得分:0)

使用setCursorVisible(false)隐藏光标并单击edittext setCursorVisible(true)。这样,还将背景颜色设置为edittext的白色

答案 5 :(得分:0)

android:cursorVisible="false"
android:background="@android:color/transparent"