Android中的EditText在使用屏幕键盘输入时不显示文本

时间:2014-02-11 19:28:55

标签: android eclipse android-edittext

我有一个由3个EditText字段组成的活动(其中包括TextViews和几个按钮)。我还有一个AutoCompleteTextView,其中包含一个使用ArrayAdapter的String列表。

每当我在模拟器中测试应用程序时,我可以在键盘启动时键入但不显示文本(它仍会给出预测),并且只有键盘关闭后文本才会出现在EditText框中。当我在手机上测试时也会发生这种情况。但是,如果屏幕键盘没有启动并且您只是正常打字,它会在您在模拟器上键入时显示并显示。

我不明白为什么!

这是我的Activity XML(其中EditText是前三个块)

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/l"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_x="3dp"
    android:layout_y="5dp"
    android:background="@drawable/gymbg" >


   <AutoCompleteTextView android:id="@+id/inputExercise"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:completionThreshold="1"
        android:inputType="text"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/timeSet"
        android:layout_margin="10dp"
        android:layout_marginTop="50dp"
        android:width="200dp" />  

    <EditText
        android:id="@+id/inputWeight"
        android:inputType="number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/inputExercise"
        android:layout_margin="10dp"
        android:layout_marginTop="50dp"
        android:width="200dp" >
    </EditText>

    <EditText
        android:id="@+id/inputReps"
        android:inputType="number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/inputWeight"
        android:layout_margin="10dp"
        android:layout_marginTop="50dp"
        android:width="200dp" >
    </EditText>

    <TextView
        android:id="@+id/timeMain"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="@string/timeMain"
        android:textSize="32sp" 
        android:textColor="#0F293B"/>

    <TextView
        android:id="@+id/timeSet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/timeMain"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:text="@string/timeSet" 
        android:layout_marginBottom="50dp"
        android:textColor="#0F293B"/>

    <TextView
        android:id="@+id/labExercise"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/addbutton"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/timeSet"
        android:layout_centerVertical="true"
        android:layout_margin="10dp"
        android:layout_marginLeft="15dp"
        android:text="@string/labExercise"   
        android:layout_toLeftOf="@+id/inputExercise"
        android:textColor="#ffffff"/>

    <Button
        android:id="@+id/addbutton"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_margin="10dp"
        android:text="@string/add" />


    <Button
    android:id="@+id/startStop"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_above="@+id/addbutton" 
    android:layout_alignParentLeft="true"
    android:layout_margin="10dp"
    android:text="@string/startStop" />

    <TextView
        android:id="@+id/labWeight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/inputExercise"
        android:layout_margin="10dp"
        android:text="@string/labWeight" 
        android:textColor="#ffffff"/>

    <TextView
        android:id="@+id/labReps"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/inputReps"
        android:layout_margin="10dp"
        android:text="@string/labReps" 
        android:textColor="#ffffff"/>

    <TextView
        android:id="@+id/seePrevious"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/inputExercise"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="22dp"
        android:text="@string/tapToViewPrevious" 
        android:textColor="#505050"/>

</RelativeLayout>

这是我在我的活动中使用的代码:(我已经删除了不必要的代码)

public class MyWorkoutDiary1Activity extends Activity implements OnClickListener, TextWatcher 
{

    TextView seePrevious;
    DatabaseHandler db;

    AutoCompleteTextView myAutoComplete;

    ArrayList<String> exerciseType = new ArrayList<String>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        exercise = new EditText(this); 
        exercise = (EditText)findViewById(R.id.inputExercise); 

        db = new DatabaseHandler(this);
        exerciseType = db.getUniqueExercises();

        myAutoComplete = (AutoCompleteTextView)findViewById(R.id.inputExercise);

        myAutoComplete.addTextChangedListener(this);
        myAutoComplete.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, exerciseType));


        weight = new EditText(this); 
        weight = (EditText)findViewById(R.id.inputWeight); 


        reps = new EditText(this); 
        reps = (EditText)findViewById(R.id.inputReps); 

    }

}

感谢您阅读

3 个答案:

答案 0 :(得分:4)

事实上,您的文字正在被打字,但这是一个小错误,使您的文字颜色与您的背景相同,所以您不会看到它。这可以通过做两件事来轻松解决:

1)只需更改textColor的{​​{1}},在布局中定义它:

EditText

或动态:

android:textColor="..."

2)更改清单中的扩展主题:

EditText et = (EditText) findViewById(R.id.your_edittext);
et.setTextColor(Color.RED);

3)在<application android:theme="@style/Theme.Light.NoTitleBar.Workaround" ... > 创建使用固定样式的新主题:

res/values/themes.xml

4)现在位于<style name="Theme.Light.NoTitleBar.Workaround" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewLight</item> <item name="android:dropDownItemStyle">@style/Widget.DropDownItemLight</item> </style> 的这些样式应该固定颜色:

res/values/styles.xml

我知道这很糟糕,但是试一试,如果有效,请尝试找到适合您布局的属性组合。

答案 1 :(得分:2)

好的,所以我找出了问题所在!

我没有发布的代码,因为我认为它是'无关'包含一个帖子

public static Runnable updateTimerMethod = new Runnable() 
{

    public void run() 
    {
        sessionTimer.setText(TimerHandler.theTime);  

        myHandler.postDelayed(this, 0);

    }
 }; 

我意识到线程基本上占用了所有的活动(我真的不知道如何正确解释),将postDelayed设为0.一旦我将其更改为... 100,那么EditText工作

感谢@NKN谁帮助了我。

这可能是我特有的,但希望这会对其他人有所帮助。

答案 2 :(得分:2)

对我有用也可能对其他人有帮助,打开你的清单文件并设置hardwareAccelerated =“true”。

 <application
    android:allowBackup="true"
    .....
    android:hardwareAccelerated="true">

有关HardwareAccelerated https://developer.android.com/guide/topics/graphics/hardware-accel.html

的更多信息