2016-11-16 5 views
0

Я пытаюсь очень простое приложение, где я бы хотел показать DialogFragment. Однако я хотел бы выровнять правый край DialogFragment с правым краем Activity. Я использовал макет гравитацию, чтобы выровнять окно в диалоговом окне, чтобы справа и вверху:Android - DialogFragment, как выровнять по краю активности?

public class MyDialogFragment extends DialogFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     super.onCreateView(inflater, container, savedInstanceState); 
     View view = inflater.inflate(R.layout.activity_main, container, false); 
     getDialog().getWindow().setGravity(Gravity.RIGHT | Gravity.TOP); 
     return view; 
    } 

} 

Однако есть «разрыв» между «правым краем s а Activity» DialogFragment правом s по умолчанию. Я попробовал несколько SO постов, но никто, кажется, работают для меня:

Changing position of the Dialog on screen android

Show AlertDialog in any position of the screen

Я пытаюсь привязать диалог моего к конкретным парам координат, но я не удается с этим подходом , То, что я хотел бы сделать, - это просто выровнять правый край диалога с правым краем Activity.

Вот изображение моей проблемы. Любое направление или решение будут оценены наиболее высоко.

enter image description here

+0

Возможно, посмотрите на это: http://keepsafe.github.io/2014/11/19/building-a-custom-overflow-menu.html –

ответ

0

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

Это очень очевидно, когда фон из DialogFragment сделан прозрачный, используя эту строку в onCreateView(..):

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

Опцион бы применить собственную тень к окну DialogFragment после установки цвета фона прозрачных ,