2012-11-30 290 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