在 ListView 中看起来像 TextView 的 EditText

Posted

技术标签:

【中文标题】在 ListView 中看起来像 TextView 的 EditText【英文标题】:EditText that looks like TextView inside a ListView 【发布时间】:2012-02-19 12:48:33 【问题描述】:

我是developing an application,用户可以编辑ListView 中的数据。我想在 ListView 中有一个EditText,这个编辑文本应该像 TextView,但是当用户点击它时,它应该看起来像 EditText,我怎样才能实现这个功能?

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

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

【问题讨论】:

查看我的应用截图,你在寻找这种类型的输出吗? EditText 等; // 初始化你的edittext// Et.setCursorVisible(false); Et.setLongClickable(false); Et.setClickable(false); Et.setFocusable(false); Et.setSelected(false); Et.setKeyListener(null); Et.setBackgroundResource(android.R.color.transparent);你再也不会像 EditText 一样看到它了。 (在手机上打字回答问​​题太痛苦了。版主,请重新格式化答案。)以防万一你想在没有 XML 的情况下这样做.. 【参考方案1】:

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

ma​​in.xml 在布局文件夹中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_    
    android:orientation="vertical" >
    <TextView
        android:layout_
        android:layout_
        android:text="@string/hello" />
    <EditText android:layout_
        android:padding="5dip"
        android:layout_
        android:textColor="#00f"
        android:textSize="20dip"
        android:background="@drawable/bg" />    
    <EditText android:layout_
        android:padding="5dip"
        android:layout_
        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:
        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);
    

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

截图示例

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

初始屏幕

在为第一个 EditText 输入时

在为第二个 EditText 输入时

【讨论】:

我对android很陌生,如果你能指导我怎么做?你会很好的。 等待我将在新答案中发布代码。仅以上截图的应用代码。【参考方案5】:
android:cursorVisible="false"
android:background="@android:color/transparent"

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于在 ListView 中看起来像 TextView 的 EditText的主要内容,如果未能解决你的问题,请参考以下文章

WCF REST:期望我的 XML 在请求中看起来像啥?

Jekyll 中看起来像终端的代码块

TextView 在 ListView 内的自定义 ArrayAdapter 中被切断

动态更改 ListView 中三个不同组的 TextView 颜色

图像缩放在功能区中看起来很糟糕

将 TextView 格式化为看起来像链接