autocompletetextview not working inside popup window

江枫思渺然 提交于 2019-12-04 06:26:06

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!