سؤال

لدي زر يجب أن يعرض نافذة منبثقة. ويجب محاذاة النافذة المنبثقة مع الجانب الأيمن من الزر. هكذا أفعل ذلك.

button.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick( final View view ) {
        if(popup == null) {
            final View view = getLayoutInflater().inflate(R.layout.popup, null);
            popup = new PopupWindow(view);
        }

        if(popup.isShowing()) {
            popup.dismiss();
        } else {
            popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
            popup.setFocusable(true);
            popup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
            popup.showAsDropDown(button, 0, 0);
        }
    }
} );

يعمل هذا الرمز بشكل جيد ولكن يتم محاذاة نافذة المنبثقة مع الجانب الأيسر من الزر. هل هناك طريقة سهلة لتغيير خطورة popupwindow؟

هل كانت مفيدة؟

المحلول

أسهل طريقة وجدتها هي تحديد معلمة إبعاد X:

final View view = popup.getContentView();
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
popup.showAsDropDown(button, button.getWidth() - view.getMeasuredWidth(), 0);

نصائح أخرى

يمكنك محاولة تغييره من ملف XML:

android:layout_graviry="left"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top