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

Smi*_*tey 4 eclipse android android-edittext

我有一个由3个EditText字段组成的活动(以及其他诸如TextViews和一些按钮)。我也有一个使用ArrayAdapter的String列表的AutoCompleteTextView。

每当我在模拟器中测试该应用程序时,我都可以在键盘启动时进行键入,但它不会显示文本(仍会提供预测),并且仅在键盘关闭时该文本才会显示在EditText框中。当我也在手机上进行测试时,也会发生这种情况。但是,如果屏幕上的键盘没有弹起,而您只是在正常键入,则在您在模拟器上键入时,它将起作用并显示。

我不知道为什么!

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

 <?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>
Run Code Online (Sandbox Code Playgroud)

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

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); 

    }

}
Run Code Online (Sandbox Code Playgroud)

谢谢阅读

Nae*_*him 6

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

 <application
    android:allowBackup="true"
    .....
    android:hardwareAccelerated="true">
Run Code Online (Sandbox Code Playgroud)

有关硬件加速的更多信息,请访问https://developer.android.com/guide/topics/graphics/hardware-accel.html


Smi*_*tey 1

好的,所以我弄清楚了问题是什么!

我没有发布的代码是因为我认为它“不相关”包含一个线程

public static Runnable updateTimerMethod = new Runnable() 
{

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

        myHandler.postDelayed(this, 0);

    }
 }; 
Run Code Online (Sandbox Code Playgroud)

我意识到线程基本上通过将 postDelayed 设置为 0 来占用所有活动(我真的不知道如何正确解释)。一旦我将其更改为... 100,然后 EditText 就起作用了。

感谢@NKN 帮助了我。

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