Может ли кто-нибудь сказать мне способ реализовать горизонтальную прокрутку в виде сетки?

2
Piyush 18 Апр 2011 в 14:47

3 ответа

Лучший ответ

Наконец-то мне удалось реализовать вид сетки с горизонтальной прокруткой в ​​android ... Вот код:

public class HorizontalGridView extends Activity {
    Bitmap viewBgrnd;
    ImageButton img ;
    Button button;
    Button b1[] = new Button[100];
    static int total=0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        horizontalScrollGalleryLayout();
    }

    public void horizontalScrollGalleryLayout () {
        Integer[] mThumbIds = {
            R.drawable.image0,R.drawable.image1,R.drawable.image2,
            R.drawable.image3,R.drawable.image4,R.drawable.image5,
            R.drawable.image6,R.drawable.image7,R.drawable.image8,
            R.drawable.image9,R.drawable.image10,R.drawable.image11,
            R.drawable.image12,R.drawable.image13,R.drawable.image14,
            R.drawable.image15,R.drawable.image16,R.drawable.image17,
            R.drawable.image18,R.drawable.image19,R.drawable.image20,
            R.drawable.image21,R.drawable.image22,R.drawable.image23,
            R.drawable.image24,R.drawable.image25,R.drawable.image26,
            R.drawable.image27,R.drawable.image28,R.drawable.image29,
            R.drawable.image30,R.drawable.image31,R.drawable.image32,
            R.drawable.image33,R.drawable.image34,R.drawable.image35,
            R.drawable.image36,R.drawable.image37,R.drawable.image38,
            R.drawable.image39,R.drawable.image40,R.drawable.image41,
            R.drawable.image42,R.drawable.image43,R.drawable.image44,
            R.drawable.image45,R.drawable.image46,R.drawable.image47,
            R.drawable.image48,R.drawable.image49,R.drawable.image50,
            R.drawable.image51,R.drawable.image52,R.drawable.image53,
            R.drawable.image54,R.drawable.image55,R.drawable.image56,
            R.drawable.image57,R.drawable.image58,R.drawable.image59,
            R.drawable.image60,R.drawable.image61,R.drawable.image62,
            R.drawable.image63,R.drawable.image64,R.drawable.image65,
            R.drawable.image66,R.drawable.image67,R.drawable.image68,
            R.drawable.image69,R.drawable.image70,R.drawable.image71,
            R.drawable.image72,R.drawable.image73,R.drawable.image74,
            R.drawable.image75,R.drawable.image76,R.drawable.image77,
            R.drawable.image77,R.drawable.image79,R.drawable.image8,
            R.drawable.image81,R.drawable.image82,R.drawable.image83,
            R.drawable.image84,R.drawable.image85,R.drawable.image86,
            R.drawable.image87,R.drawable.image88,R.drawable.image89,
            R.drawable.image90,R.drawable.image91,R.drawable.image92,
            R.drawable.image93,R.drawable.image94,R.drawable.image95,
            R.drawable.image96,R.drawable.image97,R.drawable.image98,
            R.drawable.image99,
        };
        HorizontalScrollView sv = new HorizontalScrollView(this);
        LinearLayout llh = new LinearLayout(this);
        llh.setOrientation(LinearLayout.HORIZONTAL);
        LinearLayout.LayoutParams layoutParamsTV = new LinearLayout.LayoutParams(100,100);
        LinearLayout.LayoutParams layoutParamsLL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        LinearLayout.LayoutParams layoutParamsLLD = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

        for(int k=0;k<mThumbIds.length;k++)
        {   
            LinearLayout llv = new LinearLayout(this);
            for (int i=0; i<4; i++) {
                llv.setOrientation(LinearLayout.VERTICAL);
                button = new Button(this);
                try {
                    button.setBackgroundResource(mThumbIds[total]);
                    total++;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                llv.addView(button, layoutParamsTV);
                //b1[k].setBackgroundResource(mThumbIds[k]);
            }

            //llv.addView(button, layoutParamsTV);
            llh.addView(llv, layoutParamsLL);
            llh.setBackgroundColor(Color.GRAY);
        }

        sv.addView(llh, layoutParamsLLD);
        setContentView(sv);
        sv.setBackgroundColor(Color.GRAY);
    }
}
4
Dori 15 Май 2011 в 06:19
1
Конечно, приемлемо для небольших коллекций, но, пожалуйста, не называйте это GridView. В нем отсутствует адаптер, который позволяет отображать объекты, не тратя несколько секунд на наполнение всех представлений и одновременное заполнение памяти сотнями растровых изображений.
 – 
kaay
5 Апр 2012 в 18:32

Проблема горизонтального скроллера в сетке решается альтернативным способом. Эти кнопки используются в каждом представлении сетки в представлении с горизонтальной прокруткой.

-1
Jubayar 4 Июл 2011 в 16:58

Вы ищете свойство android: scrollbarAlwaysDrawHorizontalTrack

-1
anonanon 18 Апр 2011 в 14:50
Я не вижу желаемого результата. На самом деле у меня есть сетка, она прокручивается по вертикали, но я хочу, чтобы она прокручивалась по горизонтали.
 – 
Piyush
18 Апр 2011 в 15:10
На самом деле я обнаружил, что реализация горизонтальной прокрутки в виде сетки невозможна. Скорее, мы можем реализовать относительный макет внутри представления с горизонтальной прокруткой и держать под ним наши виджеты.
 – 
Piyush
19 Апр 2011 в 09:05
Очень хорошо. Предлагаю вам ответить на свой вопрос самостоятельно, а потом я удалю свой ответ.
 – 
anon
19 Апр 2011 в 13:52