使EditText在代码中表现为TextView

时间:2011-02-14 06:50:18

标签: android

如何使EditText看起来像用Java完成而不是用XML完成的TextView。

我已经看过如何使用像

这样的xml文件
style="@android:style/Widget.TextView"
android:editable="false"
android:cursorVisible="false"
android:longClickable="false"

但是我希望这可以在java中完成,因为我没有使用任何xml文件进行布局。 一切都在代码本身完成.. 我试图在我的代码中使用GestureListener ..它适用于TextView但不适用于EditText 那么,可以为EditText做些什么来实现GestureEvents?

谢谢,

7 个答案:

答案 0 :(得分:7)

EditText Et; // initialize your 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那样看到它了。

答案 1 :(得分:3)

在edittext xml中添加以下两行:

android:focusable="false"
android:inputType="none"

答案 2 :(得分:2)

EditTextTextView的子类 - 所以除了编辑之外,适用于TextView的内容也适用于EditText

答案 3 :(得分:0)

只需为EditText添加边框: 首先在Resources / Drawable中添加border.xml

<?xml version="1.0" encoding="utf-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
  <solid android:color="#ffffff" />
  <stroke android:width="1dip" android:color="#000000"/>
</shape>

第二步:    添加android:background =&#34; @ drawable / border&#34;到TextView

 <TextView
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:inputType="date"
                    android:layout_column="1"
                    android:id="@+id/dateFromTextView"
                    android:layout_marginRight="3dp"
                    android:background="@drawable/border"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:layout_gravity="center"
                    android:gravity="center" />

答案 4 :(得分:0)

嗯,我知道这是一个非常古老的问题,但我必须这样做我的一个应用程序,并提出了一个简单的方法,从谷歌/堆栈溢出的所有答案中推断出来。假设你想让编辑文本看起来像文本视图,点击按钮使其可编辑,程序如下:

在您的布局中,设置:

 <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txt_postContent"
        android:textSize="17sp"
        android:gravity="top|left"
        android:text="This is a dummy text "
        android:layout_below="@+id/img_empimage"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:enabled="false"
        android:background="@android:color/transparent"
        style="?android:attr/textViewStyle" />

.java中设置文字的颜色:

yourEditText.setTextColor(Color.parseColor("#000000"));

在输入按钮的onClick之前。在onClick按钮中:

InputMethodManager imm = (InputMethodManager)               getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(postContent, InputMethodManager.SHOW_IMPLICIT);//shows   keyboard
int position = postContent.length();
Editable text = postContent.getText();
yourEditText.setBackground(getResources().getDrawable(R.drawable.border));//shows a border around your text view making it look like a edit text
yourEditTex.setEnabled(true);//enables the edit text which we disabled in layout file
yourEditTex.setCursorVisible(true);
Selection.setSelection(text,position-1);`//places the cursor at the end of the text

现在,在另一个按钮的textView上将编辑文字再次显示为onClick

String s = postContent.getText().toString();
yourEditText.setText(s);
yourEditText.setEnabled(false);
yourEditText.setTextColor(Color.parseColor("#000000"));
yourEditText.setBackground(null);`

我的回答涵盖两到三个问题,但我希望它会有所帮助。

答案 5 :(得分:0)

使EditText在代码

中表现为TextView

试试这个 在您的布局中,设置:

    <EditText
          android:id="@+id/editTextPassword"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginTop="8dp"
          android:layout_marginBottom="8dp"
          android:inputType="none"
          android:imeOptions="actionDone"
          android:enabled="false"
          style="?android:attr/textViewStyle" />

答案 6 :(得分:0)

这就是创建效果所需要的。

在代码中:

Main.js

在布局中:

ET.setFocusable(false);

在布局中设置背景完全删除下栏,就像只是将其隐藏在代码中一样。

使用以下命令再次将其编辑:

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