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 addImages
that 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;
}
}
}