Gallery是个非常强大的控件,但是一般都把它当作显示图片之用。其实只要定制适配器,Gallery可以放进任何控件(显示图片就是放了ImageView)。我本来是想要GridView横向滚动的效果,但是实现起来好像比较麻烦,而Gallery本来就是横向滚动的,只要稍稍修改适配器即可。下面的例子把数据定死了,只需稍稍修改一下,把数据数组作为参数传入即可。 适配器代码:
package com.test;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.TextView;
public class GallleryAdapter extends BaseAdapter
{
private Context context;
String[] s=new String[]{"第一集","第一集","第一集","第一集","第一集","第一集","第一集"};
@Override
public int getCount()
{
// TODO Auto-generated method stub
return s.length;
}
public GallleryAdapter(Context c) {
context = c;
}
@Override
public Object getItem(int position)
{
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position)
{
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
// TODO Auto-generated method stub
TextView tv=new TextView(context);
tv.setText(s[position]);
tv.setLayoutParams(new Gallery.LayoutParams(120, 120));
return tv;
}
}
Activity代码:
package com.test;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
Gallery gallery1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gallery1=(Gallery)findViewById(R.id.gallery1);
gallery1.setAdapter(new GallleryAdapter(this));
gallery1.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id)
{
// TODO Auto-generated method stub
//默认情况下,选中或没选中的项,文字颜色都是灰色的,但是被选中的反而要淡一点
//为了能更突出被选中项,把没选中的设为灰色,选中的设为红色
Gallery ga=(Gallery)parent;
for(int i=0;i parent)
{
// TODO Auto-generated method stub
}});
}
}