我想EditText
暫時不會獲得FOUCS。臨時禁用的EditText
的情況是:我有兩個EditTexts。每當EditText的文本發生更改時,我都希望另一個EditText不會響應用戶單擊,直到發生另一個預定義的事件。
爲了實現這個目標我想這:
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
registerBroadcastReceivers();
}
// Register BroadcastReceivers
private void registerBroadcastReceivers() {
Log.d(TAG, "Registering broadcast receivers.");
// Google response receiver
googleResponseReceiver = new GoogleAPIResponseReceiver();
IntentFilter googleResponseIntentFilter = new IntentFilter(
RS_GoogleApiIntentService.ACTION_RECEIVED_GOOGLE_RESPONSE);
googleResponseIntentFilter.addCategory(Intent.CATEGORY_DEFAULT);
LocalBroadcastManager.getInstance(this).registerReceiver(
googleResponseReceiver, googleResponseIntentFilter);
}
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// Set EditText non-focusable
MyActivity.this.editText2.setFocusableInTouchMode(false);
}
});
.
.
.
// Somewhere in one function I call below function to start an IntentService.
.
.
.
// Call Google API with given URL
private void CallGoogleApiWithUrl(String url, int requestId) {
Intent intent = new Intent(this, RS_GoogleApiIntentService.class);
intent.putExtra(RS_GoogleApiIntentService.EXTRA_URL_STRING, url);
intent.putExtra(RS_GoogleApiIntentService.EXTRA_GOOGLE_API_REQUEST_ID,
requestId);
startService(intent);
}
// Broadcast receiver for Google API response
public class GoogleAPIResponseReceiver extends BroadcastReceiver {
// Enabling EditText works up to this point.
@Override
public void onReceive(Context context, Intent intent) {
// Stops working now onwards.
}
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Set EditText focusable
MyActivity.this.editText2.setFocusableInTouchMode(true);
}
佈局:
<LinearLayout
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<EditText
android:id="@+id/from_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:ems="10"
android:hint="@string/from_location_hint"
android:imeOptions="actionDone"
android:imeActionLabel="Done"
android:inputType="text" >
<requestFocus />
</EditText>
<Button
android:id="@+id/use_current_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:onClick="useCurrentLocation"
android:text="@string/use_current"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:contentDescription="@string/swap_button_description"
android:onClick="swapLocations"
android:scaleType="fitStart"
android:src="@drawable/swap" />
<EditText
android:id="@+id/to_location"
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:gravity="left"
android:hint="@string/to_location_hint"
android:imeOptions="actionDone"
android:imeActionLabel="Done"
android:inputType="text" >
</EditText>
<LinearLayout
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<EditText
android:id="@+id/departuretime_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:hint="@string/departure_date_hint"
android:inputType="datetime" >
</EditText>
<EditText
android:id="@+id/departuretime_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:hint="@string/departure_time_hint"
android:inputType="datetime" >
</EditText>
</LinearLayout>
<Button
android:id="@+id/pick_match_create_trip"
style="@style/big_centered_button_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:onClick="pickMatchesButtonClicked"
android:text="@string/pick_your_matches" />
<TextView
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="75dp"
android:text="@string/current_location_textlabel"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/current_location_text"
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginTop="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall" />
<ListView
android:id="@+id/places_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:cacheColorHint="#00FFFF"
android:background="@color/white" >
</ListView>
EditText上從來沒有獲得重新對焦。禁用焦點作品但重新啓用它不會。我也試過用editText2.setEnabled();
的方法。它也沒有工作。
請出示editText1和editText2的聲明...... – TN888
你不想焦點或你不希望的EditText可見 – krishna
只是指出調用'setFocusableInTouchMode(假)''後setFocusable(假)'是多餘的。另外,如果調用'setFocusableInTouchMode(true)',則不需要'setFocusable(true)'。 – Vikram