在我的应用程序中,如果用户点击了imageview,则textview的字体大小应该更改。如果用户再次点击同一个imageview,则文本应设置为以前的字体。
在我的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);
}
});
我哪里错了?
答案 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.在多次调用的函数(即getView)中创建一个Anonymous类永远不是一个好主意 相反,您可以在适配器中实现OnClickListener并使用
保存疼痛 img.setOnClickListener(this);
2。如果这是你的完整getView功能,我认为它是高度未经优化的。请参阅此example。
答案 1 :(得分: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