2012-05-22 12 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是已保存的對話框佈局文件的名稱。 –