2011-06-01 26 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