テキストが長すぎて1つの画面に表示できないため、AlertDialogに垂直スクロールバーを追加したいと思います。
私は使用しようとしました:
Android:scrollbars="vertical"
Android:scrollbarAlwaysDrawVerticalTrack="true"
しかし、スクロールバーは表示されませんか?
これが私が使用しているxmlレイアウトファイルです:
<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>
私はAlertsDialogを次のように呼び出します:
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();
}
私は今答えを見つけました=>それはこれで今働きます:
<?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>
ビューをスクロール可能にするには、ビューをScrollView
コンテナ内にネストする必要があります。
<ScrollView>
<LinearLayout Android:orientation="vertical"
Android:scrollbars="vertical"
Android:scrollbarAlwaysDrawVerticalTrack="true">
<TextView />
<Button />
</LinearLayout>
</ScrollView>
ScrollView
コンテナは、子レイアウトビューを1つだけ持つことができることに注意してください。たとえば、TextView
なしでButton
とScrollView
をLinearLayout
に配置することはできません。
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());
これを使用すると機能します:
.setScrollable(true)
AlertDialogBoxまたは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();
}