利用Gallery的拖动功能,能很容易的将在一行上显示不下的内容显示出来。
这种特性可以用在菜单上(如果菜单足够多,以至一行显示不下)。
但是Gallery有个不爽的地方,就是被点击的那个item会一直出现在中间,有时候我们并不需要这样的“智能”!怎么办呢?
那就利用GridView,将GridView放在HorizontalScrollView中,如下:
注意上面的itemWidth*data.size(),这里才是LinearLayout的实际宽度!
R.layout.row_test2布局如下:
运行后显示的效果:
看不出什么,呵呵,拖动一下看看。
这种特性可以用在菜单上(如果菜单足够多,以至一行显示不下)。
但是Gallery有个不爽的地方,就是被点击的那个item会一直出现在中间,有时候我们并不需要这样的“智能”!怎么办呢?
那就利用GridView,将GridView放在HorizontalScrollView中,如下:
- public class Test_2_Activity extends Activity{
- private final int per=3;//每行显示的个数
- private GridView gridView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.test2);
- DisplayMetrics dm = new DisplayMetrics();
- dm = getApplicationContext().getResources().getDisplayMetrics();
- int menuWidth = dm.widthPixels-16;
- gridView= (GridView) findViewById(R.id.gallery_webnav);
- int itemWidth = menuWidth/per;
- gridView.setColumnWidth(itemWidth);
- ArrayList<Map<String,String>> data=new ArrayList<Map<String,String>>();
- Map<String,String> map;
- for(int i=0;i<5;i++){
- map=new HashMap<String,String>();
- map.put("simple_item_1", "name"+i);
- map.put("simple_item_2", "age"+i);
- map.put("simple_item_3", "class"+i);
- data.add(map);
- }
- int resource=R.layout.row_test2;
- String[] from={"simple_item_1","simple_item_2","simple_item_3"};
- int[] to={R.id.simple_item_1,R.id.simple_item_2,R.id.simple_item_3};
- SimpleAdapter adapter=new SimpleAdapter(this, data, resource, from, to);
- gridView.setAdapter(adapter);
- //让GridView一行显示,这里的layout_width是需要计算的
- LinearLayout layout = (LinearLayout) findViewById(R.id.layout_webnav);
- layout.setLayoutParams(new LayoutParams(itemWidth*data.size(), LayoutParams.WRAP_CONTENT));
- gridView.setSelection(0);
- gridView.setOnItemClickListener(listener);
- }
- }
public class Test_2_Activity extends Activity{
private final int per=3;//每行显示的个数
private GridView gridView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test2);
DisplayMetrics dm = new DisplayMetrics();
dm = getApplicationContext().getResources().getDisplayMetrics();
int menuWidth = dm.widthPixels-16;
gridView= (GridView) findViewById(R.id.gallery_webnav);
int itemWidth = menuWidth/per;
gridView.setColumnWidth(itemWidth);
ArrayList<Map<String,String>> data=new ArrayList<Map<String,String>>();
Map<String,String> map;
for(int i=0;i<5;i++){
map=new HashMap<String,String>();
map.put("simple_item_1", "name"+i);
map.put("simple_item_2", "age"+i);
map.put("simple_item_3", "class"+i);
data.add(map);
}
int resource=R.layout.row_test2;
String[] from={"simple_item_1","simple_item_2","simple_item_3"};
int[] to={R.id.simple_item_1,R.id.simple_item_2,R.id.simple_item_3};
SimpleAdapter adapter=new SimpleAdapter(this, data, resource, from, to);
gridView.setAdapter(adapter);
//让GridView一行显示,这里的layout_width是需要计算的
LinearLayout layout = (LinearLayout) findViewById(R.id.layout_webnav);
layout.setLayoutParams(new LayoutParams(itemWidth*data.size(), LayoutParams.WRAP_CONTENT));
gridView.setSelection(0);
gridView.setOnItemClickListener(listener);
}
}
注意上面的itemWidth*data.size(),这里才是LinearLayout的实际宽度!
R.layout.row_test2布局如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView android:id="@+id/simple_item_1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center"
- />
- <RelativeLayout android:background="#030e13"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView android:id="@+id/simple_item_2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:paddingLeft="10dp"
- />
- <TextView android:id="@+id/simple_item_3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:paddingRight="10dp"
- />
- </RelativeLayout>
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/simple_item_1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" /> <RelativeLayout android:background="#030e13" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/simple_item_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:paddingLeft="10dp" /> <TextView android:id="@+id/simple_item_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:paddingRight="10dp" /> </RelativeLayout> </LinearLayout>
运行后显示的效果:
看不出什么,呵呵,拖动一下看看。