2012-11-30 215 views
0

在我的应用程序中,如果用户单击imageview,textview的字体大小应该会改变。如果用户再次单击相同的imageview,则文本应设置为之前的字体。TextView字体更改

在我adpater类:

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); 


      } 
     }); 

我要去的地方在advanve wrong.please帮助me..Thanks ..

+0

第二次进入onClickListener吗? –

+0

雅其Shreya Shah ..但字体大小不设置为10 ... – Subburaj

+0

它是否去其他内部? –

回答

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.创建Anonymous cla不是一个好主意SS一个被称为多次即getView 相反,你可以在您的适配器OnClickListener和保存使用

img.setOnClickListener(this); 

2.如果这是你的完整的getView功能比我觉得这是非常没有优化的疼痛函数内。看到这个example

0

这里

方法TextView.setTextSize(INT单元,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

+0

谢谢Jatin Patel ..只使用这个概念...如果用户点击第一次字体改变..但如果用户再次点击同一个按钮,它不会设置为以前的字体..请参阅我的问题,因为我已经使用textview.settext(size)... – Subburaj