2016-04-22 1 views
2

В моем приложении у меня есть требование создать диалоговое окно «Диалог» (показано на рисунке - снизу 1/4 экрана). Я achived полного экрана DialogFragment черезDialogFragment: как установить размещение и размеры?

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     int style = DialogFragment.STYLE_NO_TITLE; 
     int theme = android.R.style.Theme_Holo; 
     setStyle(style, theme); 
    } 

Но я не уверен, как установить высоту DialogBox и держать его в нижней части экрана?

enter image description here

+0

можно изменить ширину/высоту LayoutParams вашего rootview – Blackbelt

+0

Вы можете использовать нижний лист для того же –

+0

@BhaveshDesai нижнего листа может содержать только меню ?? – Alex

ответ

0

При создании фрагмента вы дают возможность заявить, где вы хотите, чтобы макет фрагмента быть добавлен в.

add(R.layout....) 

Создайте пустой макет в макете деятельности, которая является определенным размером этого блока, а затем просто изменить метод добавления к этой компоновке

add(R.layout.theNewlyCreatedLayoutWiththeRightSizeAndPosition) 
0

Вы можете использовать метод onCreateDialog (Bundle savedInstance) в создайте диалог, затем установите положение. например -

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    // Make the dialog view ready 
    //LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); 
    //View v = layoutInflater.inflate(R.layout.dialog,null); 

    // Create the dialog 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    // Set the view in dialog 
    //builder.setView(v); 
    Dialog dialog = builder.create(); 

    // Set the dialog position 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes(); 

    wmlp.gravity = Gravity.BOTTOM| Gravity.CENTER; 
    wmlp.x = 100; //x position 
    wmlp.y = 100; //y position 


    return dialog; 
} 
0

Вы можете использовать Bottomsheet для вашей проблемы

В Bottomsheet вы также можете использовать Fragment и Views

Bottomsheet примеры here

0

хорошо вы могли бы добиться того, чтобы просто перекрывая OnCreateView и затем задайте параметры вручную, как вы хотите.

Вот пример

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { 

    Window window = getDialog().getWindow(); 

    // set gravity 
    window.setGravity(Gravity.BOTTOM|Gravity.CENTER); 

    // then set the values to where you want to position it 
    WindowManager.LayoutParams params = window.getAttributes(); 
    params.x = 300; 
    params.y = 100; 
    window.setAttributes(params); 
} 
Смежные вопросы