2012-05-22 22 views
12

jestem wyświetlając listę ciągów w AlertDialog jak pokazano poniżej:Android: czcionka o stałej szerokości w AlertDialog

enter image description here

1.How mogę ustawić stałą szerokość czcionki jak ten przedstawiony poniżej

enter image description here

2. AlertDialog ma domyślnie włączone przewijanie pionowe. Jak włączyć przewijanie poziome, aby ostatnia linia pozostała w poprzednim wierszu?

Odpowiedz

16

Napełnij swój własny widok dla AlertDialog i ustaw android: typeface = "monospace" w tym widoku. Aby to osiągnąć:

enter image description here

Użyj tego układ:

<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> 

Ten kod głównej działalności buduje AlertDialog (drop przycisk na układzie domyślnym).

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

Co to jest 'alertmono' i/lub' R.layout'? – DSlomer64

+0

R.layout to sposób, w jaki system Android odwołuje się do skompilowanych układów, a alertmono to nazwa zapisanego pliku układu okna dialogowego. –

Powiązane problemy