【问题标题】:EditText that looks like TextView inside a ListView在 ListView 中看起来像 TextView 的 EditText
【发布时间】: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 的情况下这样做..

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


【解决方案1】:

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

ma​​in.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);
    }
}

【讨论】:

    【解决方案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 提示用户输入。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-11-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-02
            • 1970-01-01
            相关资源
            最近更新 更多