使用XML文件很简单,因为我可以将参数指定为
<android:layout_width="fill_parent" android:layout_height="wrap_content">
Run Code Online (Sandbox Code Playgroud)
但我在通过代码指定它时感到困惑.对于每个视图,我使用指定参数
view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT));
Run Code Online (Sandbox Code Playgroud)
我看到我可以选择将其指定为相对布局,框架布局等.截至目前,我正在为所有视图使用线性布局,例如图像,文本和gridview.是否应根据父元素的布局定义视图参数?或者将它指定为线性布局是否可以,即使视图是例如framelayout的子节点?对不起,但我找不到差异.
我有一个网格视图,使用扩展BaseAdapter的自定义ImageAdapter类填充.图像是从SD卡中的特定文件夹动态加载的.我根据他们的帖子(1.png,2.png等)命名了图像.我还OnClickListener为网格项设置了一个:从SD卡播放与图像同名的音频文件.
当图像数量较少并且适合屏幕时,它可以很好地工作.
但是当数字很大并且图像不适合屏幕时,通过向下滚动屏幕显示的下一组行主要是重复前几行的图像而不是相应位置的图像.
我从logcat中发现,getView()适配器类的功能最初仅针对屏幕上可见的图像进行调用,并且在向下滚动时,不能正确调用其他位置
有时,整个图像集也会被重新排列.我应该做什么不同于网格视图的基本实现,以正确显示大量图像?还有什么我必须照顾的吗?
编辑 - 代码
我正在设置每个标签
tabGrid[i].setAdapter(new ImageAdapter(this,i));
Run Code Online (Sandbox Code Playgroud)
这是图像适配器类
@Override
public int getCount() {
// fileNames is a string array containing the image file names : 1.png, 2.png etc
return fileNames.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
// I did not use this function
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View …Run Code Online (Sandbox Code Playgroud)