Горизонтальный списокПохожий на каталоги Google
Как сделать горизонтальный вид списка, подобный представленному в каталогах Google?
Большая основная область представляет собой панель просмотра, но нижняя строка представляет собой горизонтальную прокрутку со списком элементов, которые можно нажимать. Я предполагаю, что это список, если бы это было, как это будет сделано?
Я использовал "горизонтальный просмотр списка" с открытым исходным кодом, на который есть ссылки в других вопросах, но он не работает так же гладко, как в этом приложении Google.
2 ответа
Это определенно галерея!
Здесь вы можете видеть, что это точно Галерея, которая поставляется с SDK -> Смотрите видео на Youtube, чтобы проверить, насколько гладко оно работает;)
Я сделал для себя краткое руководство от Android.com для дальнейшего использования. Я надеюсь, что вы можете использовать это тоже:
1) Откройте файл res/layout/main.xml и вставьте следующее:
<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
2) Код для вставки на ваш onCreate()
метод:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery gallery = (Gallery) findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
Toast.makeText(HelloGallery.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
3) Создайте новый файл XML в каталоге res/values / с именем attrs.xml. Вставьте следующее:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="HelloGallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
4) Вернитесь к вашему файлу.java и после onCreate(Bundle)
метод, определить пользовательский ImageAdapter
учебный класс:
public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
private Integer[] mImageIds = {
R.drawable.sample_1,
R.drawable.sample_2,
R.drawable.sample_3,
R.drawable.sample_4,
R.drawable.sample_5,
R.drawable.sample_6,
R.drawable.sample_7
};
public ImageAdapter(Context c) {
mContext = c;
TypedArray attr = mContext.obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = attr.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
attr.recycle();
}
public int getCount() {
return mImageIds.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 = new ImageView(mContext);
imageView.setImageResource(mImageIds[position]);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 100));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setBackgroundResource(mGalleryItemBackground);
return imageView;
}
}
Ну... код очень прост, но вы можете обратиться к оригинальному и более длинному документу здесь.
Я не уверен, но я думаю, что это Галерея ( http://developer.android.com/reference/android/widget/Gallery.html), которая отправляет обратные вызовы ViewPager.
Вы можете найти образец кода здесь: http://www.androidpeople.com/android-gallery-example
Вместо тоста вам нужно перезвонить на пейджер и установить нужную страницу.
Я думаю, что это будет хотеть, что вы хотите!:-)