如何在自定义列表视图中更改文本大小(字体大小)?

时间:2011-05-19 09:36:51

标签: android listview font-size

我尝试在我的应用中更改textSize。 我想更改我的customlistview的textSize。 我的listview的行XML文件有image,3 textView。 我想在用户单击Optionmenu时更改textView的textSize,然后单击AlertDialog的SingleChoiceItems复选框。

这是我的代码。

我是否需要更改XMl文件? 然后我如何设置我的customAdapter?.. 我是否需要更改适配器的getView方法?

我愿意接受任何答案。

public boolean onOptionsItemSelected(MenuItem item){
    switch(item.getItemId()){

        case R.id.ks_notice_menu_textsize:

            final CharSequence[] items = {"normal", "big", "bigger"};
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("select textSize");
            builder.setSingleChoiceItems(items, mSelect, 
                    new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    mSelect = which;
                }
            });

            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {



                    int textSize = (int)Username.getTextSize();  
                    switch(mSelect){
                    case 0:     

                        //here I need to change textSize

                        break;
                    case 1:
                        //here I need to change textSize
                        break;                          


                    case 2:
                        //here I need to change textSize
                        break;
                    }



                }
            });
            builder.setNegativeButton("cancel", null);
            builder.show();
            return true;    
    }
    return false;

1 个答案:

答案 0 :(得分:0)

ListView行的XML中,您需要向相关的TextView添加ID。然后,您需要替换:

//here I need to change textSize

with(假设您希望文本大小为5):

customAdapter.setTextSize(5);

最后,在您的customAdapter中,您需要实现一个setTextSize(int)方法,该方法检索所有视图并将其文本大小设置为传递的值。它还需要存储该值,并将其用于用户向下滚动时创建的任何新视图。

类似的东西:

public void setTextSize(final int textSize) {
    fTextSize = textSize;

    for (View view : fViews) {
        ((TextView) view.findViewById(R.id.list_view_text_1).setTextSize(textSize);
        ((TextView) view.findViewById(R.id.list_view_text_2).setTextSize(textSize);
        ((TextView) view.findViewById(R.id.list_view_text_3).setTextSize(textSize);
    }
}

public View getView(final int position, final View convertView, final ViewGroup parent) {
    View view = // retrieve your view from XML.
    fViews.add(view);
    ((TextView) view.findViewById(R.id.list_view_text_1).setTextSize(textSize);
    ((TextView) view.findViewById(R.id.list_view_text_2).setTextSize(textSize);
    ((TextView) view.findViewById(R.id.list_view_text_3).setTextSize(textSize);

    return (view);
}