I have an activity consisting of 3 EditText fields (amongst other things like TextViews and a few buttons). I also have an AutoCompleteTextView with a list of String's using an ArrayAdapter.
Whenever I test the app in an emulator, I can type when the keyboard is up but it doesn't show the text (it still gives predictions) and the text only appears in the EditText box once the keyboard is closed down. This happens when I test it on my phone, too. However, it works and shows up as you type on the emulator if the on-screen keyboard isn't up and you're just typing normally.
I have no idea why!
Here is my Activity XML (where the EditText's are the top 3 blocks)
<?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>
and here is the code I used in my activity: (I have stripped out unneccesary code)
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);
}
}
Thanks for reading
It works for me may be helpful to others as well, open your manifest file and set hardwareAccelerated="true".
For more about HardwareAccelerated https://developer.android.com/guide/topics/graphics/hardware-accel.html
In fact your text is being typped, but that's a little bug that makes your text color be the same as your background, so you don't see it. This can be easily fixed by doing 2 things:
1) Simply change the
textColor
of yourEditText
, either defining it in the layout:or dynamically:
2) Change the extended theme in your manifest:
3) Create the new theme at
res/values/themes.xml
which uses fixed styles:4) Now these styles, located at
res/values/styles.xml
should fix the color:I know it's a mess, but try it and if it works, try finding a combination of those attributes that fit to your layout.
Ok, so I worked out what the issue was!
The code which I didn't post because I thought it was 'irrelevant' contained a thread
I realised that the thread was basically taking up all of the activity (I don't really know how to explain that properly) by having the postDelayed as 0. Once I changed this to say... 100, then the EditText worked.
Thank you to @NKN who helped me.
This may be specific to me, but hopefully this will help somebody else.