Estoy creando un DialogFragment para mostrar algunos mensajes de ayuda con respecto a mi aplicación. Todo funciona bien además de una cosa: hay una franja negra en la parte superior de la ventana que muestra el DialogFragment, que supongo que está reservado para el título, algo que no quiero usar.
Esto es especialmente doloroso ya que mi DialogFragment personalizado usa un fondo blanco, por lo que el cambio es demasiado notorio para dejarlo de lado.
Déjame mostrarte esto de una manera más gráfica:
Ahora el código XML para mi DialogFragment es el siguiente:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/holding"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/dialog_fragment_bg"
>
<!-- Usamos un LinearLayout para que la imagen y el texto esten bien alineados -->
<LinearLayout
android:id="@+id/confirmationToast"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView android:id="@+id/confirmationToastText"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="@string/help_dialog_fragment"
android:textColor="#AE0000"
android:gravity="center_vertical"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/confirmationButtonLL"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<Button android:id="@+id/confirmationDialogButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginBottom="60dp"
android:background="@drawable/ok_button">
</Button>
</LinearLayout>
</LinearLayout>
</ScrollView>
Y el código de la clase que implementa el DialogFragment:
public class HelpDialog extends DialogFragment {
public HelpDialog() {
// Empty constructor required for DialogFragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the XML view for the help dialog fragment
View view = inflater.inflate(R.layout.help_dialog_fragment, container);
TextView text = (TextView)view.findViewById(R.id.confirmationToastText);
text.setText(Html.fromHtml(getString(R.string.help_dialog_fragment)));
//get the OK button and add a Listener
((Button) view.findViewById(R.id.confirmationDialogButton)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// When button is clicked, call up to owning activity.
HelpDialog.this.dismiss();
}
});
return view;
}
}
Y el proceso de creación en la Actividad principal:
/**
* Shows the HelpDialog Fragment
*/
private void showHelpDialog() {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
HelpDialog helpDialog = new HelpDialog();
helpDialog.show(fm, "fragment_help");
}
Realmente no sé si esta respuesta, relacionada con un Diálogo, también encaja aquí Android: ¿Cómo crear un Diálogo sin título?
¿Cómo puedo deshacerme de esta área de título?
fuente
Respuestas:
Simplemente agregue esta línea de código en su
HelpDialog.onCreateView(...)
De esta manera, está pidiendo explícitamente obtener una ventana sin título :)
EDITAR
Como
@DataGraham
y@Blundell
señalado en los comentarios a continuación, es más seguro para agregar la solicitud de una ventana de título menor en elonCreateDialog()
método en lugar deonCreateView()
. De esta manera, puede evitar molestar a NPE cuando no está usando su fragmento comoDialog
:fuente
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE)
...getDialog
le devolverá un NPEandroid:layout_width
atributo para la vista raíz en el diseño de su cuadro de diálogo establecido enwrap_content
?El fragmento de diálogo tiene el método setStyle, que debe llamarse antes de crear Java Doc . También el estilo del diálogo se puede configurar con el mismo método
fuente
fuente
Prueba de manera fácil
fuente
fuente
Establezca el estilo en Theme_Holo_Dialog_NoActionBar:
fuente