我有一个编辑文本,我们在其中键入餐馆名称,在键入时我想显示一个弹出菜单,其中包含基于文本键入的餐馆列表。但键盘弹出菜单显示为: Click here to see image 我希望我的弹出菜单适合键盘上方。 这是我显示弹出菜单的代码:
final EditText restaurant = (EditText) rootView.findViewById(R.id.reservation_edit_text_restaurant);
restaurant.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
PopupMenu popupMenu = new PopupMenu(getContext(),restaurant);
//get all the kitchen name from database
List<String> kitchenNameList = getKitchenName();
for (int j = 0; j < kitchenNameList.size(); ++j){
popupMenu.getMenu().add(kitchenNameList.get(j));
}
popupMenu.show();
}
@Override
public void afterTextChanged(Editable editable) {
}
});
答案 0 :(得分:0)
使用AutoCompleteTextView:
而不是EditText <AutoCompleteTextView
android:id="@+id/Months"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:textStyle="bold"
android:width="250dip" />
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
public class AutoCompleteString extends Activity implements OnItemClickListener, OnItemSelectedListener {
// Initialize variables
AutoCompleteTextView textView=null;
private ArrayAdapter<String> adapter;
//These values show in autocomplete
String item[]={
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.auto_complete_string);
// Initialize AutoCompleteTextView values
// Get AutoCompleteTextView reference from xml
textView = (AutoCompleteTextView) findViewById(R.id.Months);
//Create adapter
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, item);
textView.setThreshold(1);
//Set adapter to AutoCompleteTextView
textView.setAdapter(adapter);
textView.setOnItemSelectedListener(this);
textView.setOnItemClickListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
long arg3) {
// TODO Auto-generated method stub
//Log.d("AutocompleteContacts", "onItemSelected() position " + position);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
InputMethodManager imm = (InputMethodManager) getSystemService(
INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// Show Alert
Toast.makeText(getBaseContext(), "Position:"+arg2+" Month:"+arg0.getItemAtPosition(arg2),
Toast.LENGTH_LONG).show();
Log.d("AutocompleteContacts", "Position:"+arg2+" Month:"+arg0.getItemAtPosition(arg2));
}
protected void onResume() {
super.onResume();
}
protected void onDestroy() {
super.onDestroy();
}
}
希望如此,它会对你有帮助。Source code and output is here