我想在一个列中使用水平滚动在gridview中显示图像缩略图。我玩了很多参数,但我无法弄清楚我做错了什么。请有人帮助我。 main.xml中:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<GridView
android:layout_width="500dp"
android:layout_height="400dp"
android:id="@+id/grid"
android:columnWidth="300dp"
android:padding="5dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:scrollbars="horizontal"
android:stretchMode="spacingWidthUniform">
</GridView>
</LinearLayout>
活动代码:
//---the images to display---
Integer[] imageIDs = {
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridView = (GridView) findViewById(R.id.grid);
gridView.setAdapter(new ImageAdapter(this));
gridView.setNumColumns(imageIDs.length);
}
public class ImageAdapter extends BaseAdapter
{
private Context context;
public ImageAdapter(Context c)
{
context = c;
}
public int getCount() {
return imageIDs.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageIDs[position]);
return imageView;
}
}
答案 0 :(得分:1)
检查一下,......
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none" >
<GridView
android:layout_width="500dp"
android:layout_height="400dp"
android:id="@+id/grid"
android:columnWidth="300dp"
android:padding="5dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:scrollbars="horizontal"
android:stretchMode="spacingWidthUniform">
</GridView>
</HorizontalScrollView>
</LinearLayout>
答案 1 :(得分:1)
main.xml中
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="horizontal" >
<GridView
android:layout_width="500dp"
android:layout_height="400dp"
android:id="@+id/grid"
android:columnWidth="300dp"
android:padding="5dp"
android:horizontalSpacing="100dp"
android:verticalSpacing="10dp"
android:scrollbars="horizontal"
android:stretchMode="spacingWidthUniform">
</GridView>
</HorizontalScrollView>
答案 2 :(得分:1)
如果您没有要显示的图片,可以尝试以下方法:
public class MyHorizontalView extends HorizontalScrollView {
private LinearLayout internalWrapper;
public StampsCustomView(Context context) {
super(context, null);
}
public StampsCustomView(Context context, AttributeSet attr) {
super(context, attr);
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
setFadingEdgeLength(0);
this.setHorizontalScrollBarEnabled(false);
this.setVerticalScrollBarEnabled(false);
internalWrapper = new LinearLayout(context);
internalWrapper.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
internalWrapper.setOrientation(LinearLayout.HORIZONTAL);
addView(internalWrapper);
}
public void addImages(int[] images) {
internalWrapper.removeAllViews();
for (int i = 0; i < images.length; i++) {
ImageView iv = new ImageView(getContext());
iv.setImageResource(images[i]);
internalWrapper.addView(iv);
}
}
}
这里我有一个扩展HorizontalScrollView的视图,我向它添加了一个linearLayout。
有一个名为addImages
的函数,它将图像的资源ID作为输入来显示它们。
您可以修改此项以在internalWrapper
中添加任何视图。
您可以将此视图用作:
<com.example.android.MyHorizontalView
android:id="@+id/h_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="horizontal" >
</com.example.android.MyHorizontalView>
和活动
MyHorizontalView hView=(MyHorizontalView)findViewById(R.id.h_view);
hView.addImages(<-resource ids->);
答案 3 :(得分:-1)
试试这段代码
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class Test2Activity extends Activity {
/** Called when the activity is first created. */
public Integer[] imageIDs = {
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library,
R.drawable.library
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridView = (GridView) findViewById(R.id.grid);
gridView.setAdapter(new ImageAdapter(this, imageIDs));
gridView.setNumColumns(imageIDs.length);
}
class ImageAdapter extends BaseAdapter
{
private Context context;
Integer[] imageIDs;
public ImageAdapter(Context c, Integer[] imageIDResults)
{
context = c;
imageIDs = imageIDResults;
}
public int getCount() {
return imageIDs.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageIDs[position]);
return imageView;
}
}
}