0

在我的应用程序中,如果用户单击图像视图,则文本视图的字体大小应更改。如果用户再次单击同一图像视图,则文本应设置为以前的字体。

在我的适配器类中:

 public View getView(int position, View convertView, ViewGroup parent) 
    {
        this.Position=position;
        // TODO Auto-generated method stub

        rowView = LayoutInflater
                 .from(parent.getContext())
                 .inflate(R.layout.newsdescriptionrow, null);

          TextView prevnews=(TextView)rowView.findViewById(R.id.prevnews);
          TextView nextnews=(TextView)rowView.findViewById(R.id.nextnews);

          ImageView img=(ImageView)rowView.findViewById(R.id.fontimage);
          img.setImageResource(mImageIds);

 img.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(!fontselection)
                {
                    font=20;
                    fontselection = true;

                }
                else
                {
                    System.out.println("inside else..");
                    font = 10;
                    fontselection = false;

                }
//              font=20;
                TextView textView = (TextView) rowView
                        .findViewById(R.id.name_Desclabel);
                textView.setText(body[Position]);
                System.out.println("fontsasss="+font);
                textView.setTextSize(font);
            }
        });

我哪里错了?

4

2 回答 2

1

您可以使用多种可用方法之一来做到这一点。

//为了提高效率,请不要让听众听到

TextView textView = (TextView) rowView.findViewById(R.id.name_Desclabel);

//解决方案1

img.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //1. get the font size  
                float fontSize = textView.getTextSize();
                //change the font size
                if(fontSize == 10){
                    fontSize=20;
                }else if(fontSize==20){
                    fontSize=10;
                }

                textView.setText(body[Position]);
                System.out.println("fontsasss="+font);
                //3. set the new font size
                textView.setTextSize(fontSize);
            }
        });

//解决方案2

boolean isFontChanged=false;
textView.setTextSize(/*10 OR 20 set initial size here*/);


img.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {

                    //1. change the font size
                    if(isFontChanged){
                        fontSize=20; //initial
                    }else {
                        fontSize=10; //new changed size
                    }

                    textView.setText(body[Position]);
                    System.out.println("fontsasss="+font);
                    //2. set the new font size
                    textView.setTextSize(fontSize);

                    //3. for future 
                   isFontChanged = !isFontChanged;
                }
            });

建议 1. 在多次调用的函数中创建一个匿名类永远不是一个好主意,即 getView 相反,您可以在适配器中实现 OnClickListener 并使用

   img.setOnClickListener(this);

2. 如果这是您的完整 getView 功能,我认为它是高度未优化的。请参阅此 示例

于 2012-11-30T10:53:08.017 回答
0

这里

方法 TextView.setTextSize(int unit , int size); 取了两个参数。

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,9);

http://developer.android.com/reference/android/util/TypedValue.html#COMPLEX_UNIT_DIP

http://developer.android.com/reference/android/widget/TextView.html#setTextSize%28int,%20float%29

于 2012-11-30T10:37:08.153 回答