1

我正在开发一个应用程序,用户可以在其中编辑ListView. 我想要一个EditTextListView 里面,这个 edittext 的行为应该像 TextView 但是当用户点击它时它应该看起来像EditText,我怎样才能实现这个功能?

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

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

4

6 回答 6

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);
    }
}
于 2012-01-26T13:31:45.220 回答
0

使用EditText 的选择器来创建不同的状态。如果它处于空闲状态,则将普通颜色的可绘制对象作为背景,如果聚焦,则使用类似于真实 EditText 背景的 9 补丁 PNG 可绘制对象。

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

示例截图

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

初始屏幕

在此处输入图像描述

在为第一个 EditText 输入时

在此处输入图像描述

在为第二个 EditText 输入时

在此处输入图像描述

于 2012-01-26T12:32:28.060 回答
0

好吧,我建议使用 textview .. 当单击它时,它将切换到父级中的 editText(add View /removeView ) .. 当焦点发生变化时,它将恢复到 textview 并进行新的更改.. 使用弹出窗口的第二种解决方案用于编辑目的的对话框,使用完成按钮提交并返回以返回列表。改变editText风格的第三个解决方案:

editText.setBackgroundResource(R.layout.writemode);
//later after this item loses focus, use:
editText.setBackgroundResource(R.layout.readmode);
于 2012-01-26T12:32:57.437 回答
0

使用 setCursorVisible(false) 隐藏光标和点击edittext setCursorVisible(true)。这个,也将背景颜色设置为edittext的白色

于 2012-01-26T12:54:47.590 回答
0
android:cursorVisible="false"
android:background="@android:color/transparent"
于 2017-09-21T12:53:46.303 回答
-1

您可以使用 AlertDialog 提示用户输入。

于 2012-01-26T12:37:41.007 回答