2011-06-01 22 views
3

在我的應用程序中有一個按鈕,當你點擊一個警報對話框將出現。該警報對話框由單個選項列表項組成。在這裏我想設置單選列表項的文字大小。 有可能嗎?如果是的話,該怎麼做。android-How to設置在警報對話框中的列表項的文本大小

下面是我的代碼

sclist.java

package com.examples.scl; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class sclist extends Activity { 

private static final int DIALOG_SINGLE_CHOICE = 1; 


    @Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DIALOG_SINGLE_CHOICE: 
      return new AlertDialog.Builder(sclist.this) 
       .setIcon(R.drawable.alert_dialog_icon) 
       .setTitle("Single choice list") 
       .setSingleChoiceItems(R.array.select_dialog_items2, 0, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 

         /* User clicked on a radio button do some stuff */ 
        } 
       }) 
       .setPositiveButton("ok", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 

         /* User clicked Yes so do some stuff */ 
        } 
       }) 
       .setNegativeButton("cancel", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 

         /* User clicked No so do some stuff */ 
        } 
       }) 
       .create(); 
     } 
     return null; 
     } 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    /* Display a radio button group */ 
    Button radioButton = (Button) findViewById(R.id.radio_button); 
    radioButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      showDialog(DIALOG_SINGLE_CHOICE); 
     } 
    }); 
} 
} 
+0

另外,在提出問題之前進行搜索。這個問題已經回答過了。 – DKIT 2011-06-01 08:59:19

+0

真的嗎?因爲我正在尋找這個確切的東西,我找不到答案。有關於如何更改警報對話框中的_message_格式的答案,但不包含_singleChoiceItems_。如果你看到它在別的地方回答,鏈接會有幫助。 – matt 2012-02-29 17:46:15

回答

1

好問題。我相信你不得不使用AlertDialog.Builder構造函數,它也需要一個主題AlertDialog.Builder(Context context, int theme),看看你是否能夠在該描述中看到任何有用的東西,我從來沒有嘗試過。

+0

可惜只有API 11 – 2011-09-05 10:01:41

12

我剛剛在我正在進行的匹配遊戲中遇到了這個問題。我的解決方案並不簡單,但我想使用自定義字體,並且我沒有看到用2.2 Android界面(這是我的目標)實現它的簡單方法。訣竅是在顯示它之前將OnShowListener附加到警報對話框。在該監聽器中,將ListAdapter從ListView中取出,並用一個代理對象包裝它,該代理對象轉發除getView之外的所有調用。在該函數中,將視圖轉換爲TextView,設置字體和大小,並返回視圖。以下是我的代碼:

    // Add your list with builder up here 
     AlertDialog alert = builder.create(); 
     alert.setOnShowListener(new OnShowListener() { 

      @Override 
      public void onShow(DialogInterface alert) { 
       ListView listView = ((AlertDialog)alert).getListView(); 
       final ListAdapter originalAdapter = listView.getAdapter(); 

       listView.setAdapter(new ListAdapter() 
       { 

        @Override 
        public int getCount() { 
         return originalAdapter.getCount(); 
        } 

        @Override 
        public Object getItem(int id) { 
         return originalAdapter.getItem(id); 
        } 

        @Override 
        public long getItemId(int id) { 
         return originalAdapter.getItemId(id); 
        } 

        @Override 
        public int getItemViewType(int id) { 
         return originalAdapter.getItemViewType(id); 
        } 

        @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 
         View view = originalAdapter.getView(position, convertView, parent); 
         TextView textView = (TextView)view; 
         textView.setTypeface(MyFontUtil.getTypeface(MyActivity,MY_DEFAULT_FONT)); 
         textView.setTextColor(Color.BLACK); 
         textView.setTextSize(25); // FIXIT - absolute size 
         return view; 
        } 

        @Override 
        public int getViewTypeCount() { 
         return originalAdapter.getViewTypeCount(); 
        } 

        @Override 
        public boolean hasStableIds() { 
         return originalAdapter.hasStableIds(); 
        } 

        @Override 
        public boolean isEmpty() { 
         return originalAdapter.isEmpty(); 
        } 

        @Override 
        public void registerDataSetObserver(DataSetObserver observer) { 
         originalAdapter.registerDataSetObserver(observer); 

        } 

        @Override 
        public void unregisterDataSetObserver(DataSetObserver observer) { 
         originalAdapter.unregisterDataSetObserver(observer); 

        } 

        @Override 
        public boolean areAllItemsEnabled() { 
         return originalAdapter.areAllItemsEnabled(); 
        } 

        @Override 
        public boolean isEnabled(int position) { 
         return originalAdapter.isEnabled(position); 
        } 

       }); 

      } 

     }); 


     alert.show(); 

如果您想在幾周內看到它在Android Market上的行動。搜索metaphyze(我的發佈者ID)。我還沒決定怎麼稱呼它。 (這不是「FlashMatch中文我免費」,這是我的第一款遊戲,這是一款小孩的配對遊戲,玩遊戲並在最後點擊圖片,你會看到帶有風格列表的AlterDialog。)。

+0

我知道它已經很老了,但它幫助我做了類似的事情(在ListPreference中),所以+1 – Guillaume 2012-02-27 00:38:58

+0

+1 OP(問題)和上面的答案幫助我瞭解如何才能設置顏色和其他屬性。但正如我在[這裏問的問題](http://stackoverflow.com/questions/14040245/how-to-extract-view-or-item-id-from-a-dynamic-multi-choice-items-list-在警報中)如何獲取ItemID或爲點擊項目分別設置顏色和其他屬性?假設如果我單擊列表中的單個項目並希望單擊的項目具有綠色背景/文本顏色? – beerBear 2012-12-26 12:38:02

+0

真棒回答。正在尋找'ListView'中的每一行使用不同的自定義字體,這是迄今爲止我發現的最好的方式!謝謝! – Gatekeeper 2013-07-27 18:16:26