2016-01-13 9 views
0

У меня есть PopupWindow, который, наконец, решает следовать моей команде и проявлять себя после нулевой ошибки (конечно, не моя ошибка в том, чтобы забыть инициализировать некоторое значение).Android - Программно изменяемый макет окна всплывающего окна

Вот файл XML для PopupWindow

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/popup_handphone_MainLayout" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <RelativeLayout 
     android:id="@+id/popup_handphone_Wrapper" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/popupkodehp"> 

     <TextView 
      android:id="@+id/popup_handphone_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:gravity="center" 
      android:textColor="@color/textColor" 
      android:text="@string/popupPhoneMessage"/> 

     <RelativeLayout 
      android:id="@+id/popup_handphone_functionalities" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/popup_handphone_text" 
      android:layout_marginTop="15dp"> 

      <EditText 
       android:id="@+id/popup_handphone_phoneNumber" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:hint="Phone Number" 
       android:textColorHint="@color/textColor" /> 

      <EditText 
       android:id="@+id/popup_handphone_phoneNumberConfirm" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/popup_handphone_phoneNumber" 
       android:layout_marginTop="10dp" 
       android:hint="Retype Phone Number" 
       android:textColorHint="@color/textColor"/> 

      <Button 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/popup_handphone_phoneNumberConfirm" 
       android:layout_marginTop="20dp" 
       android:minHeight="20dp" 
       android:text="Send Code" 
       android:textColor="@color/textColor"/> 

     </RelativeLayout> 

    </RelativeLayout> 

</RelativeLayout> 

Вот код PopupWindow я сделал с помощью анонимных и удивительных людей во всем Google

View.OnClickListener phoneReinputHandler = new View.OnClickListener() { 

     public void onClick(View arg0) { 
      /*Intent intent = new Intent(SignupStepTwoActivity.this, PopupHandphone.class); 
      backDim = (RelativeLayout) findViewById(R.id.bac_dim_layout); 
      //backDim.setVisibility(View.VISIBLE); 
      startActivity(intent);*/ 

      mainLayout = (RelativeLayout)findViewById(R.id.activity_signup_step_two_mainLayout); 

      int width = displayMetrics.widthPixels; 
      int height = displayMetrics.heightPixels; 
      inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
/*   View popupLayoutInflater = inflater.inflate(R.layout.popup_handphone, mainLayout); 

      RelativeLayout popupFunctionalitiesWrapper = (RelativeLayout)popupLayoutInflater.findViewById(R.id.popup_handphone_functionalities); 
      int popupFunctionalitiesWrapperHeight = layoutResize.height(70, displayMetrics); 
      RelativeLayout.LayoutParams popupFunctionalitiesWrapperParams = (RelativeLayout.LayoutParams)popupFunctionalitiesWrapper.getLayoutParams(); 
      popupFunctionalitiesWrapperParams.height = popupFunctionalitiesWrapperHeight; 
*/ 
      PopupWindow pw = new PopupWindow(
        inflater.inflate(R.layout.popup_handphone, null, false), 
        (int)(width * .8), 
        (int)(height*.35), 
        true); 
      pw.setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent))); 
      pw.setOutsideTouchable(true); 

      pw.showAtLocation(mainLayout, Gravity.CENTER, 0, 0); 

     } 
    }; 

Вторая комментировал часть является Не удалось установить высоту элемента макета. Он также отображается на основном макете, как и в целом, макет всего PopupWindow лежит поверх макета класса.

Как запрограммировать настройку макета PopupWindow Я сделал из класса, на котором я нахожусь?

ответ

0

Я нашел ответ о том, как изменить внутренности PopupWindow с помощью popupWindow.getContentView()

Как обычно, создать экземпляр PopupWindow

PopupWindow pw = new PopupWindow(
        inflater.inflate(R.layout.popup_handphone, null, false), 
        (int)(width * .8), 
        (int)(height*.35), 
        true); 

ТОГДА вызвать расположение PopupWindow используя ..

RelativeLayout popupFunctionalitiesWrapper = (RelativeLayout)pw.getContentView().findViewById(R.id.popup_handphone_functionalities); 

Отметьте, что pw.getContentView() есть еще до findViewById.

И через этот popupFunctionalitiesWrapper, я могу установить питания, как ..

int popupFunctionalitiesWrapperWidth = layoutResize.width(70); 
      RelativeLayout.LayoutParams popupFunctionalitiesWrapperParams = (RelativeLayout.LayoutParams)popupFunctionalitiesWrapper.getLayoutParams(); 
      popupFunctionalitiesWrapperParams.width = popupFunctionalitiesWrapperWidth; 
      popupFunctionalitiesWrapperParams.addRule(Gravity.CENTER); 
      popupFunctionalitiesWrapper.setLayoutParams(popupFunctionalitiesWrapperParams); 

Да и что это такое!

0

Если вы хотите обновить ширину и высоту PopupWindow, пока отображается всплывающее окно, воспользуйтесь функцией PopupWindow.update.

Надеюсь, это поможет.

+0

Это для самого окна? Или он может использоваться для отдельных компонентов внутри? –

+0

Если вы хотите сбросить объект 'width' и' height', а затем 'PopupWindow' или если вы хотите обновить отдельный компонент внутри, тогда получите представление из popupwindow' PopupWindow.getContentView', а затем обновите –

Смежные вопросы