我目前正在开发一个程序,它有两个EditText框,一个用于屏幕宽度,另一个用于屏幕高度。我希望能够做到的是,当用户知道高度或宽度并且他们输入测量值时,他们进入EditText框,该框与他们所拥有的测量值相对应,当他们按下Enter键时,它将为他们提供未知的尺寸用于16:9的屏幕。
这是用户界面:
<TextView android:layout_height="wrap_content"
android:text="Screen Ratio:"
android:id="@+id/ScreenRatio"
android:layout_width="100dip"
android:layout_alignTop="@+id/ratio_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"
/>
我希望应用能够根据输入EditText框中的最后一个数字给我一个值,这样用户在尝试另一个数字之前不必清除这两个框。跟上用户最后输入文本的两个框中的哪一个的最佳方法是什么?我尝试了一个if else语句,基于盒子是否处于焦点但却无法使其工作。有什么建议吗?
答案 0 :(得分:0)
<强> EDITED 强>:
向EditText
方法afterTextChanged(Editable s)
添加TextWatcher(同一个)。
Editable s
属于用户当前输入的文本框,并且具有布尔类型widthSelected
的成员变量。
所以你的代码将是这样的:
if(s == edtWidth.getText())
{
// User is typing in Width
widthSelected = true;
}else
{
// User is typing in Height
widthSelected = false;
}
在按钮的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);
}