2014-09-20 34 views
2

我需要基于条件来改变ImageView的单ImageView的,问题是,尺寸的ImageView只能通过ImageView.getLayoutParameters被改变()。宽度/高度,这样做会改变每个的宽度ListView中的项目。调整内部的ListView

是否有改变单一的ImageView大小的方法吗?至于现在我找不到办法。

+0

您的布局参数尝试过吗? – 2014-09-20 16:09:05

+0

我做过了,在我的文章中提到它 – Yehonatan 2014-09-20 16:53:12

+0

您是否找到解决此问题的解决方案? – androidevil 2015-04-10 19:54:08

回答

0

你必须写,如果其他条件

if(yourcondtion) 
{ 
setlayoutparams(); 
} 

else 
{ 
setoriginallayoutparams(); 
} 
+1

正如我所说。更改layoutparams将更改每个项目的参数,因为ListView项目是从单个XML文件填充的 – Yehonatan 2014-09-20 16:17:15

1

这里是我的自定义适配器。我可以通过将参数设置为imageView来重新调整图像大小。希望对你有帮助!

P.S最糟糕的是,通过这种方式,你必须创建每次您的看法!这比使用viewHolder更慢。

public class Adapter extends BaseAdapter { 

ArrayList<String> list = new ArrayList<String>(); 
Activity activity; 

public Adapter(Activity activity) { 
    this.activity = activity; 
    list.add("Item 1"); 
    list.add("Item 2"); 
    list.add("Item 3"); 
    list.add("Item 4"); 
    list.add("Item 5"); 
    list.add("Item 6"); 
} 

@Override 
public int getCount() { 
    return list.size(); 
} 

@Override 
public Object getItem(int i) { 
    return list.get(i); 
} 

@Override 
public long getItemId(int i) { 
    return 0; 
} 

@Override 
public View getView(int i, View convertView, ViewGroup viewGroup) { 


    LayoutInflater inflater = activity.getLayoutInflater(); 
    convertView = inflater.inflate(R.layout.adapter,null); 

    ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView); 
    TextView textView = (TextView) convertView.findViewById(R.id.textView); 


    textView.setText(list.get(i)); 
    //Condition 
    if (i == 5) 
    { 
     setLayoutParams(imageView,40,40); 
    } 
    else { 
     setLayoutParams(imageView,70,70); 
    } 

    imageView.setImageDrawable(activity.getResources().getDrawable(R.drawable.ic_launcher)); 
    return convertView; 
} 



private View setLayoutParams(View view, int width, int height) 
{ 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width,height); 
    view.setLayoutParams(params); 
    return view; 
} 
} 
+0

这不是我所要求的。我说每个ListView项目。这改变了整个布局。 – Yehonatan 2014-09-20 18:27:10

+0

确定不是改变此 '如果(条件) { 返回的setLayout(convertView,宽度,高度); }否则{ 返回的setLayout(convertView,宽度,高度); }' 并将其更改为setLayoutParams: 'AbsListView.LayoutParams params = new AbsListView.LayoutParams(width,height);' – ArbenMaloku 2014-09-20 18:34:18