Estou trabalhando em um aplicativo Android no qual estou usando DialogFragment
para exibir a caixa de diálogo, mas sua largura é muito pequena. Como posso fazer essa largura fill_parent
para isso?
public class AddNoteDialogFragment extends DialogFragment {
public AddNoteDialogFragment() {
// Empty constructor required for DialogFragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getDialog().setTitle(getString(R.string.app_name));
View view = inflater.inflate(R.layout.fragment_add_note_dialog,
container);
return view;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
// request a window without the title
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
}
fragment_add_note_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<EditText
android:id="@+id/addNoteEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:hint="@string/clock_enter_add_note"
android:imeOptions="actionDone"
android:inputType="textCapSentences|textMultiLine"
android:lines="5" />
<Button
android:id="@+id/submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/login_button"
android:text="@string/submit_button"
android:textColor="@android:color/white" />
</LinearLayout>
Respostas:
Esta é a solução que descobri para lidar com esse problema:
Editar:
Você pode usar o código abaixo no
onCrateView
método de Fragment antes de retornar a visão inflada.fonte
dialog.getWindow().setBackgroundDrawable(null);
getDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
oonResume()
método DialogFragment . Não funcionou noonCreateView()
método. Modifiquei ligeiramente a resposta dedialog
paragetDialog()
.setLayout
noonStart
método funciona perfeitamente. Obrigado.Você já tentou usar a resposta de Elvis em Como fazer um diálogo de alerta preencher 90% do tamanho da tela ?
É o seguinte:
Atualizar:
O código acima deve ser adicionado dentro do
onStart()
método doDialogFragment
.fonte
WindowManager.LayoutParams.FILL_PARENT
.ViewGroup.LayoutParams
, então funciona perfeitamente de qualquer maneira.onStart
método do DialogFragment para funcionar.onCreateDialog
Isso funcionou para mim
Crie seu estilo personalizado:
Use este estilo na sua caixa de diálogo
fonte
Para mim, funcionou quando substituí o pai LinearLayout do layout inflado em onCreateView por RelativeLayout. Nenhuma outra mudança de código necessária.
fonte
no topo do meu layout de diálogo funcionou.
fonte
e se você quiser muito mais flexibilidade pode estender AppCompat_Dialog_Alert e atributos personalizados
fonte
No meu caso, também usei a seguinte abordagem:
Mas ainda havia pequenas lacunas entre as bordas esquerda e direita da caixa de diálogo e as bordas da tela em alguns dispositivos Lollipop + (por exemplo, Nexus 9).
Não era óbvio, mas finalmente descobri que, para torná-lo largura total em todos os dispositivos e plataformas , o plano de fundo da janela deve ser especificado em styles.xml como o seguinte:
E, claro, esse estilo precisa ser usado quando criamos o diálogo como o seguinte:
fonte
Com base em outras soluções, criei a minha própria.
fonte
Eu quero esclarecer isso. Ambas as formas estão certas, mas com DialogFragment diferente .
Usando
android.app.DialogFragment
Usando
android.support.v4.app.DialogFragment
fonte
Outra solução que funcionou para mim sem efeitos colaterais foi:
Em sua classe que estende DialogFragment:
Em seus estilos:
fonte
setStyle()
Isso funciona perfeitamente para mim.
Com isso, você pode dar a largura ao Fragmento de diálogo.
fonte
Crie um estilo personalizado em seu arquivo style.xml. Basta copiar e colar este código em seu arquivo style.xml
Em seguida, no método createDialog de seu DialogFragment, crie o objeto de diálogo pelo código
Isso está funcionando para mim e espero que ajude você também
fonte
Foi assim que resolvi quando enfrentei esse problema. Experimente isso.
no onActivityCreated de seu DialogFragment, adicione este código de acordo com sua necessidade ....
fonte
use isso no método onCreateView de DialogFragment
220 é a altura do fragmento de diálogo, altere-o como desejar
fonte
User AlertDialog.Builder dentro de seu DialogFragment. Adicione-o a um
onCreateDialog
método como este. EonCreateView
não fazer nada.fonte
na raiz do layout, defina android: minWidth com um valor muito grande, por exemplo
fonte
Tentei várias respostas listadas acima; eles não funcionaram para mim. Esta é a solução para meu problema:
Em
DialogFragment()
, adicione os códigos abaixo:fonte