Горизонтальный списокПохожий на каталоги Google

Как сделать горизонтальный вид списка, подобный представленному в каталогах Google?

Большая основная область представляет собой панель просмотра, но нижняя строка представляет собой горизонтальную прокрутку со списком элементов, которые можно нажимать. Я предполагаю, что это список, если бы это было, как это будет сделано?

Я использовал "горизонтальный просмотр списка" с открытым исходным кодом, на который есть ссылки в других вопросах, но он не работает так же гладко, как в этом приложении Google.

http://i43.tinypic.com/2yl1zxg.png

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

Вместо тоста вам нужно перезвонить на пейджер и установить нужную страницу.

Я думаю, что это будет хотеть, что вы хотите!:-)

Другие вопросы по тегам