android中GridView中的水平滚动
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10331583/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Horizontal scroll in GridView in android
提问by azad
I want to display image thumbnails in a gridview in one column with a horizontal scroll. I have played with many parameters but I can't figure out what I am doing wrong. Kindly someone help me. main.xml:
我想在具有水平滚动的一列中的 gridview 中显示图像缩略图。我玩过很多参数,但我不知道我做错了什么。请有人帮助我。主文件:
<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>
Activity Code:
活动代码:
//---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;
}
}
回答by Basim Sherif
check this,...
检查这个,...
<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>
回答by sush
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>
回答by vipul mittal
If you don't have a lot of images to display you can try something like this:
如果您没有很多图像要显示,您可以尝试这样的操作:
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);
}
}
}
Here I have a view that extends HorizontalScrollView and I add a linearLayout to it.
在这里,我有一个扩展 HorizontalScrollView 的视图,并向其添加了一个 linearLayout。
There is a function called addImagesthat takes resource id's of images as input to display them.
You can modify this to add any view or images in internalWrapper.
有一个函数被调用addImages,它将图像的资源 ID 作为输入来显示它们。您可以修改它以在 internalWrapper.
you can use this view as:
您可以将此视图用作:
<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>
and in activity
并在活动中
MyHorizontalView hView=(MyHorizontalView)findViewById(R.id.h_view);
hView.addImages(<-resource ids->);
回答by sush
try out this code
试试这个代码
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;
}
}
}

