Android编辑文本光标不可见?

时间:2014-01-28 05:56:04

标签: android android-edittext

 <shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
 <solid android:color="#ffffff" />    
 <stroke android:width="1dp" 
  android:color="#000000" />
 </shape>  

我在setBackgroundResource(R.drawable.selfbg);中使用此代码 当我使用此代码时,光标在Edittext中不可见。

9 个答案:

答案 0 :(得分:34)

你试过吗?

android:textCursorDrawable属性设置为@null会导致使用android:textColor作为光标颜色。

答案 1 :(得分:8)

尝试在EditText中添加以下内容:

 android:textCursorDrawable="@null"
 android:background="@null"

答案 2 :(得分:5)

尝试:

 <item name="android:textCursorDrawable">@null</item>

虽然需要API-12及以上版本。

答案 3 :(得分:3)

<EditText  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textCursorDrawable="@drawable/color_cursor"
    android:background="@drawable/R.drawable.selfbg"/>


Than create drawalble xml: color_cursor

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <size android:width="2dp" />
    <solid android:color="#000000"  />
</shape>

答案 4 :(得分:0)

我认为你不能通过代码“setTextCursorDrawable”。

我查看了EditTextTextView的Android文档,但没有这样的方法。

所以你必须在xml布局中这样做。

答案 5 :(得分:0)

试试这个

在EditText中,使用属性:

android:textCursorDrawable="@drawable/black_cursor"

并将drawable black_cursor.xml添加到您的资源中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <size android:width="0dp" />
</shape>

答案 6 :(得分:0)

如果您希望仅通过Java代码完成此操作 试试这个

在TextView类中,您可以找到以下代码

case com.android.internal.R.styleable.TextView_textCursorDrawable:
    mCursorDrawableRes = a.getResourceId(attr, 0);
    break;

但是方法textCursorDrawable()只存在于R.attr中,如果你想设置这个属性,你只能通过在XML文件中包含一个editText来调用下面的构造方法。

public EditText(Context context, AttributeSet attrs) {
    this(context, attrs, com.android.internal.R.attr.editTextStyle);
}

答案 7 :(得分:0)

MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    EditText editText = findViewById(R.id.editText);
    editText.requestFocus();
    editText.setSelection(0);
}

activity_main

 <LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <include
            layout="@layout/content_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
 </LinearLayout>

content_main

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
 </LinearLayout>

正如您所看到的,我的EditText不在activity_main中,而是在content_main中,无论如何我希望它能同样起作用,但我将其包含在activity_main中,但是不...不幸的是,它不是那样工作的。所以我像这样改变了我的activity_main,它就像一个魅力。

**activity_main**

 <LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
 </LinearLayout>

答案 8 :(得分:0)

我认为您必须在xml的EditText中包含requestFocus,这样它才能起作用,相反,我看到许多示例,未经我测试它们都无法正常工作,只是在添加requestFocus时才起作用。