web-dev-qa-db-ja.com

Android-このアラートダイアログをスクロール可能にするにはどうすればよいですか?

私はAndroidの初心者で、最初のAndroid app。私の[About]メニュー項目をクリックすると、本当に長いメッセージのアラートダイアログが表示されます。私はそれをスクロール可能にするためにさまざまな方法を試してみましたが、できませんでした。

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);  
alertDialog.setTitle("Title");  
alertDialog.setMessage("Here is a really long message.");  
 alertDialog.setButton("OK", null);  
 AlertDialog alert = alertDialog.create();
alert.show();

誰も私にそれをスクロール可能にする方法を詳細に説明できますか?任意の助けや提案をいただければ幸いです!

17
ashu

この解決策は this post から取っています。

ビューをスクロール可能にするには、ScrollViewコンテナー内にネストする必要があります。

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

ScrollViewコンテナは子レイアウトビューを1つしか持つことができないことに注意してください。たとえば、LinearLayoutなしでTextViewとButtonをScrollViewに配置することはできません。

25
blganesh101

その場合、スクロールビューの下にテキストビューを含む独自のlayout.xmlファイルを作成できます。このテキストビューでTextMessageを設定し、アラートダイアログボックスでこのレイアウトを拡張します。

yourxmlfile.xml

<ScrollView 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <LinearLayout 
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent" >

    <TextView
        Android:id="@+id/textmsg"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:text="@string/hello" />

    </LinearLayout>
</ScrollView>

アクティビティクラス

LayoutInflater inflater= LayoutInflater.from(this);
View view=inflater.inflate(R.layout.yourxmlfile, null);

TextView textview=(TextView)view.findViewById(R.id.textmsg);
textview.setText("Your really long message.");
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);  
alertDialog.setTitle("Title");  
//alertDialog.setMessage("Here is a really long message.");
alertDialog.setView(view);
alertDialog.setButton("OK", null);  
AlertDialog alert = alertDialog.create();
alert.show();
7

デフォルトのアプローチを使用できます:

  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setTitle("Title")
      .setMessage(message);

  AlertDialog alert = builder.create();

  alert.show();

メッセージTextViewは、alert_dialog.xmlに組み込まれているScrollViewコンテナーであることがわかります。使用されるレイアウトです。

このファイルの場所は post です

1
yoAlex5