I am currently working on a program that has two EditText boxes one for a screens Width and one for the screens Height. What I want to be able to do is that when a user knows either the height or width and they enter the measurement they have into the EditText box that corresponds with the measurement that they have and when they press enter it will give them the unknown dimension for a 16:9 screen.
Here is the user interface:
<TextView android:layout_height="wrap_content"
android:text="Screen Ratio:"
android:id="@+id/ScreenRatio"
android:layout_width="100dip"
android:layout_alignTop="@+id/rat开发者_如何学运维io_spinner"
android:layout_alignBottom="@+id/ratio_spinner"
android:gravity="center_vertical" />
<Spinner android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ScreenRatio"
android:id="@+id/ratio_spinner"/>
<TextView
android:layout_height="wrap_content"
android:text="Units:"
android:layout_width="wrap_content"
android:layout_toLeftOf="@+id/unit_spinner"
android:layout_alignTop="@+id/unit_spinner"
android:layout_alignBottom="@+id/unit_spinner"
android:gravity="center_vertical"
android:layout_alignParentLeft="true"
android:id="@+id/ScreenUnit"/>
<Spinner android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ScreenRatio"
android:layout_below="@+id/ratio_spinner"
android:id="@+id/unit_spinner"/>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/unit_spinner"
android:id="@+id/screen_layout"
android:stretchColumns="1,2">
<View
android:layout_height="2dip"
android:background="#FF909090"/>
<TableRow>
<TextView
android:layout_column="1"
android:paddingTop="3dip"
android:text="Screen Width:"/>
<TextView
android:layout_column="2"
android:padding="3dip"
android:text="Screen Height:"/>
</TableRow>
<TableRow
android:paddingBottom="3dip" >
<EditText
android:layout_column="1"
android:id="@+id/width_EditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:inputType="number"
android:textSize="14px"
android:hint="Enter a Width"/>
<EditText
android:layout_column="2"
android:id="@+id/height_EditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:numeric="integer"
android:textSize="14px"
android:hint="Enter a Height"/>
</TableRow>
</TableLayout>
<Button
android:id="@+id/enter"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Enter"
android:gravity="fill"
android:paddingBottom="10dip"
android:paddingRight="50dip"
android:paddingLeft="50dip"
android:layout_alignRight="@+id/screen_layout"
android:layout_below="@+id/screen_layout"
/>
I want the app to be able to give me the value based on the last number entered into the EditText box and so that the user doesn't have to clear both boxes before trying another number. what is the best way of keeping up with which of the two boxes that the user had entered text into last was? I tried a if else statement based on if the boxes were in focus but couldn't manage to get it to work. Any suggestions?
EDITED:
Add a TextWatcher(the same one) to both the EditText
which has the afterTextChanged(Editable s)
method.
Editable s
belongs to the textbox that the user is currently entering, and have a member variable of boolean type widthSelected
.
So your code will be something like this:
if(s == edtWidth.getText())
{
// User is typing in Width
widthSelected = true;
}else
{
// User is typing in Height
widthSelected = false;
}
In your button's onClickListener:
if(widthSelected)
{
width = Integer.parseInt(edtWidth.getText().toString());
edtHeight.setText("" + (9 * width)/16);
}else{
height = Integer.parseInt(edtHeight.getText().toString());
edtWidth.setText("" + (16 * height)/9);
}
精彩评论