2012-05-22 11 views
12

で固定幅フォント下図のように、私はAlertDialogでの文字列のリストを表示しています:アンドロイド:AlertDialog

enter image description here

私は

次のような固定幅フォントを設定することができます1.How

enter image description here

2. AlertDialogはデフォルトで垂直スクロールが有効になっています。最後の行が前の行に残るように水平スクロールを有効にするにはどうすればよいですか?

答えて

16

AlertDialogの独自のビューを膨らませ、そのビューでandroid:typeface = "monospace"を設定します。これを達成するために:

enter image description here

使用このレイアウト:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/dlgView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:id="@+id/dlgLayout" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="5dp"> 
    <TextView android:id="@+id/dlgText" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:textColor="#FFF" 
     android:typeface="monospace"/> 
    </LinearLayout> 
</ScrollView> 

の主な活動のためにこのコードはAlertDialog構築します(デフォルトのレイアウトの上にボタンをドロップします)。

public class MonospacedAlertActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     //attach an instance of HandleClick to the Button 
     findViewById(R.id.button1).setOnClickListener(new HandleClick()); 
    } 
    private class HandleClick implements OnClickListener{ 
     public void onClick(View arg0) { 
      ShowAlert(MonospacedAlertActivity.this); 
     } 

     private void ShowAlert(Activity callingActivity) { 
      //Generate views to pass to AlertDialog.Builder and to set the text 
      View dlg; 
      TextView tvText; 
      try { 
       //Inflate the custom view 
       LayoutInflater inflater = callingActivity.getLayoutInflater(); 
       dlg = inflater.inflate(R.layout.alertmono, (ViewGroup) callingActivity.findViewById(R.id.dlgView)); 
       tvText = (TextView) dlg.findViewById(R.id.dlgText); 
      } catch(InflateException e) { 
       //Inflater can throw exception, unlikely but default to TextView if it occurs 
       dlg = tvText = new TextView(callingActivity); 
      } 
      //Set the text 
      tvText.setText("22-05-2012 20:51:13 114 58 00:04:19\n"+ 
          "22-05-2012 20:59:15 84 52 00:01:25\n"+ 
          "22-05-2012 22:49:48 96 51 00:01:32\n"+ 
          "23-05-2012 00:08:52 79 58 00:01:26"); 
      //Build and show the dialog 
      new AlertDialog.Builder(callingActivity) 
       .setTitle(callingActivity.getString(R.string.app_name)) 
       .setCancelable(true) 
       .setIcon(R.drawable.ic_launcher) 
       .setPositiveButton("OK", null) 
       .setView(dlg) 
       .show(); //Builder method returns allow for method chaining 
     } 
    } 
} 
+0

'alertmono'および/または' R.layout'とは何ですか? – DSlomer64

+0

R.layoutはAndroidがコンパイルされたレイアウトをどのように参照するかを表し、alertmonoは保存されたダイアログレイアウトファイルの名前です。 –