ventana studio personalizado emergente ejemplo edittext dialogo custom cuadro con android dialog scrollbar

studio - ¿Agregar una barra de desplazamiento vertical a un AlertDialog en Android?



popup android studio (3)

Para que una vista se pueda desplazar, debe estar anidada dentro de un contenedor ScrollView :

<ScrollView> <LinearLayout android:orientation="vertical" android:scrollbars="vertical" android:scrollbarAlwaysDrawVerticalTrack="true"> <TextView /> <Button /> </LinearLayout> </ScrollView>

Tenga en cuenta que un contenedor ScrollView solo puede tener una vista de diseño secundaria. No es posible, por ejemplo, colocar un TextView y un Button en un ScrollView sin LinearLayout .

Me gustaría agregar una barra de desplazamiento vertical a un AlertDialog porque mi texto es demasiado largo para mostrarlo en una pantalla:

He intentado usar:

android:scrollbars="vertical" android:scrollbarAlwaysDrawVerticalTrack="true"

¿Pero las barras de desplazamiento ni siquiera se muestran?

Aquí está el archivo de diseño xml que estoy usando:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="vertical" android:scrollbarAlwaysDrawVerticalTrack="true" android:id="@+id/instructions_view" > <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A LONG TEXT 1"/> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A LONG TEXT 2"/> </LinearLayout>

Llamo a AlertsDialog con:

public void onClick(View v) { switch(v.getId()){ case R.id.Button_Instructions: InstructionsDialog(); break; case R.id.Button_Exit: ExitDialog(); break; } } public void InstructionsDialog(){ AlertDialog.Builder ad = new AlertDialog.Builder(this); ad.setIcon(R.drawable.icon); ad.setTitle("Instructions ..."); ad.setView(LayoutInflater.from(this).inflate(R.layout.instructions_dialog,null)); ad.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int arg1) { // OK, go back to Main menu } } ); ad.setOnCancelListener(new DialogInterface.OnCancelListener(){ public void onCancel(DialogInterface dialog) { // OK, go back to Main menu }} ); ad.show(); }

Encontré la respuesta ahora => FUNCIONA AHORA CON ESTO:

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="vertical" android:scrollbarAlwaysDrawVerticalTrack="true" android:id="@+id/instructions_view" > <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A LONG TEXT 1"/> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A LONG TEXT 2"/> </LinearLayout> </ScrollView>


Usando esto funciona:

.setScrollable(true)

Use esto en su AlertDialogBox o MaterialStyledDialog.

private void gettermsandconditions() { final MaterialStyledDialog dialogHeader_1 = new MaterialStyledDialog.Builder(this) .setTitle("Terms and Conditions !") // .setDescription("What can we improve? Your feedback is always welcome.") .setDescription(R.string.Terms_and_condition) .setIcon(R.drawable.bill_icon) .setStyle(Style.HEADER_WITH_ICON) .setHeaderColor(R.color.colorPrimary) .withDarkerOverlay(true) .setScrollable(true) .onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { // startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + context.getPackageName()))); } }) .setNegativeText("Ok") .build(); //.setStyle(Style.HEADER_WITH_TITLE) dialogHeader_1.show(); }


AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("YOUR_TITLE") .setMessage("YOUR_MSG") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setIcon(android.R.drawable.ic_dialog_info) .show(); TextView textView = (TextView) dialog.findViewById(android.R.id.message); textView.setMaxLines(5); textView.setScroller(new Scroller(this)); textView.setVerticalScrollBarEnabled(true); textView.setMovementMethod(new ScrollingMovementMethod());