Ich möchte einem AlertDialog eine vertikale Bildlaufleiste hinzufügen, da mein Text zu lang ist, um auf einem Bildschirm angezeigt zu werden:
Ich habe versucht zu verwenden:
Android:scrollbars="vertical"
Android:scrollbarAlwaysDrawVerticalTrack="true"
aber die Bildlaufleisten werden nicht einmal angezeigt?
Hier ist die XML-Layoutdatei, die ich verwende:
<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>
Ich rufe den AlertsDialog auf mit:
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();
}
Ich habe jetzt die Antwort gefunden => ES FUNKTIONIERT JETZT MIT DIESEM:
<?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>
Damit eine Ansicht scrollbar ist, muss sie in einem ScrollView
-Container verschachtelt sein:
<ScrollView>
<LinearLayout Android:orientation="vertical"
Android:scrollbars="vertical"
Android:scrollbarAlwaysDrawVerticalTrack="true">
<TextView />
<Button />
</LinearLayout>
</ScrollView>
Beachten Sie, dass ein ScrollView
Container nur eine untergeordnete Layoutansicht haben kann. Es ist beispielsweise nicht möglich, eine TextView
und eine Button
in eine ScrollView
ohne die LinearLayout
zu platzieren.
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());
Damit funktioniert es:
.setScrollable(true)
Verwenden Sie dies in Ihrer AlertDialogBox oder Ihrem 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();
}