问题
I am new to android and i am trying to integrate auto complete text view
inside popup window. But the auto complete action not working inside the popup window. If i placed the auto complete text view outside the popup auto complete works fine.
Xml code of popup window:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/popup"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:ignore="UselessParent" >
<FrameLayout
android:id="@+id/innertop"
android:layout_width="match_parent"
android:layout_height="55dp"
>
<AutoCompleteTextView
android:id="@+id/listitem"
style="@style/CodeFont"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:background="@drawable/border"
android:hint="@string/search_products_"
android:textSize="12sp"
android:typeface="serif" />
<Button
android:id="@+id/searchbtn1"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center_vertical|right"
android:layout_marginRight="10dp"
android:layout_marginBottom="1dp"
android:background="@drawable/search_icon" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
Activity java code:
final TextView btnOpenPopup1 = (TextView)findViewById(R.id.textView6);
btnOpenPopup1.setOnClickListener(new TextView.OnClickListener(){
@Override
public void onClick(View arg0) {
LayoutInflater layoutInflater
= (LayoutInflater)getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.login_popup, null);
final PopupWindow popupWindow = new PopupWindow(
popupView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true);
popupWindow.showAsDropDown(btnOpenPopup, -50, -70);
I have searched in Google. I can find solutions for alert dialog box but not for modal window. How to fix this?
回答1:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);
final Button btnOpenPopup = (Button)findViewById(R.id.openpopup);
btnOpenPopup.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.activity_popup, null);
final PopupWindow popupWindow = new PopupWindow(
popupView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, true);
popupView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
final EditText text = (EditText)popupView.findViewById(R.id.editText); // to write Review notes
final TextView txtRatingValue = (TextView)popupView.findViewById(R.id.txtRatingValue); // Rating Value
final RatingBar ratingBar = (RatingBar)popupView.findViewById(R.id.ratingBar);
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
txtRatingValue.setText(String.valueOf(rating));
}
});
// popupView.addListenerOnRatingBar();
Button ok = (Button )popupView.findViewById(R.id.ok); // Database Codes to store the apps rating and review Data
ok.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyActivity.this, "Reminder Nikhil Keshri's Database code to Be added here....", Toast.LENGTH_LONG).show();
}
});
Button clear = (Button)popupView.findViewById(R.id.clear); // clearing button
clear.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
text.setText("");
// txtRatingValue.setText("0.0");
}
});
// text.setBackgroundColor();
Button close = (Button)popupView.findViewById(R.id.close); // closing the popup window
close.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(btnOpenPopup, -50, -70);
}});
}
回答2:
I faced the same problem but I end up using parent activity to display item in popup window.You can use dialog to solve this problem, but if you are insist on popupwindow. Then, this is how it gonna works.
1.create autocompletetextview in your parent activity,place it anywhere where you want to display list and make visibility to gone.
2.Now In popupwindow, when you call textwatcher or textchange, set that data adapter to parent autocomplete text view instead of popupwindow autocomplete textview and set visibility to visible.
3.It will display list of item as you type any character.
Hope helped!
来源:https://stackoverflow.com/questions/21303527/autocompletetextview-not-working-inside-popup-window