2012-05-22 3 views
12

Я отображая список строк в качестве AlertDialog, как показано ниже:Android: Фиксированная ширина шрифта в AlertDialog

enter image description here

1.How можно установить фиксированную ширину шрифта, как один показано ниже

enter image description here

2.The 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 - это имя сохраненного файла макета диалогового окна. –

Смежные вопросы