确定以前是否选择了EditText的最佳方法

时间:2010-12-28 06:14:23

标签: android if-statement android-edittext

我目前正在开发一个程序,它有两个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语句,基于盒子是否处于焦点但却无法使其工作。有什么建议吗?

1 个答案:

答案 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);
}