0

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

Я попытался поместить сетку в горизонтальное прокрутку и установить число столбцов gridview для количества изображений. Но этот подход не помогает.

Пожалуйста, предложите что-нибудь?

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent" 
android:orientation="vertical" android:background="@android:color/white" android:clickable="true" 
> 

<HorizontalScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scrollbars="none" 
    android:layout_margin="1dp" 
    android:fillViewport="false" 
    android:layout_below="@+id/tvHis"> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     > 
    <GridView 


     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/listViewHis" 
     android:layout_below="@+id/tvHisPosts" 



     /> 
    </LinearLayout> 
</HorizontalScrollView> 

</LinearLayout> 

ответ

0

Я предлагаю вам следует использовать RecycleView для ее достижения. Я думаю, что это простой способ.
Посмотрите на this post изменить RecycleView ориентацию на горизонтальную
И как сделать RecycleView: follow this tutorial
Надеюсь, что это поможет

+0

Является ли это обратным совместимым? – Panda

+0

В думе ** RecycleView ** - новый и лучший способ теперь –

+0

@Panda. Вы должны использовать библиотеку поддержки, которая contais 'RecyclerView', которая обратно совместима. – wasyl

1

я, наконец, добились этого без использования какой-либо библиотеки, посмотрите на это:

я получал JSon товара, как это:

{"searchInfo":{"status":"1","message":"Success","clist":[{"id":"1de57434-795e-49ac-0ca3-5614dacecbd4","name":"Theater","image_url":"http://52.25.198.71/miisecretory/category_images/movie.png"},{"id":"62fe1c92-2192-2ebb-7e92-5614dacad69b","name":"CNG","image_url":"http://52.25.198.71/miisecretory/category_images/cng.png"},{"id":"8060094c-df4f-5290-7983-5614dad31677","name":"Wine-shop","image_url":"http://52.25.198.71/miisecretory/category_images/beer.png"},{"id":"888a90c4-a6b0-c2e2-6b3c-561788e973f6","name":"Chemist","image_url":"http://52.25.198.71/miisecretory/category_images/chemist.png"},{"id":"a39b4ec1-943f-b800-a671-561789a57871","name":"Food","image_url":"http://52.25.198.71/miisecretory/category_images/food.png"},{"id":"c644cc53-2fce-8cbe-0715-5614da9c765f","name":"College","image_url":"http://52.25.198.71/miisecretory/category_images/college.png"},{"id":"c71e8757-072b-1bf4-5b25-5614d980ef15","name":"Hospital","image_url":"http://52.25.198.71/miisecretory/category_images/hospital.png"},{"id":"db835491-d1d2-5467-a1a1-5614d9963c94","name":"Petrol-Pumps","image_url":"http://52.25.198.71/miisecretory/category_images/petrol.png"},{"id":"f13100ca-4052-c0f4-863a-5614d9631afb","name":"ATM","image_url":"http://52.25.198.71/miisecretory/category_images/atm.png"}]}} 

поэтому я хотел бы создать горизонтальную Scrollview с работой кнопки мыши события, как я ш а также рисовать маршруты на карте Google так, первый я рисую макет, который, как например:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="5"> 

    <fragment 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="4" /> 


    <HorizontalScrollView 
     android:id="@+id/horizontalScroll" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <LinearLayout 
      android:id="@+id/ll" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:orientation="horizontal"> 


     </LinearLayout> 


    </HorizontalScrollView> 
</LinearLayout> 

в настоящее время в соответствии с ответом JSon, который состоит из массива JSON Я сделал это:

for (int v = 0; v < collectionInfo.size(); v++) { 
       /*---------------Creating frame layout----------------------*/ 

       FrameLayout frameLayout = new FrameLayout(ActivityMap.this); 
       LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, getPixelsToDP(90)); 
       layoutParams.rightMargin = getPixelsToDP(10); 
       frameLayout.setLayoutParams(layoutParams); 

       /*--------------end of frame layout----------------------------*/ 

       /*---------------Creating image view----------------------*/ 
       final ImageView imgView = new ImageView(ActivityMap.this); //create imageview dynamically 
       LinearLayout.LayoutParams lpImage = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
       imgView.setImageBitmap(collectionInfo.get(v).getCatImage()); 
       imgView.setLayoutParams(lpImage); 
       // setting ID to retrieve at later time (same as its position) 
       imgView.setId(v); 
       imgView.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
//      long id = imgView.getId(); 
         // getting id which is same as its position 
         Log.i(TAG, "Clicked on " + collectionInfo.get(v.getId()).getCatName()); 
         // getting selected category's data list 
         new GetSelectedCategoryData().execute(collectionInfo.get(v.getId()).getCatID()); 
        } 
       }); 
       /*--------------end of image view----------------------------*/ 

       /*---------------Creating Text view----------------------*/ 
       TextView textView = new TextView(ActivityMap.this);//create textview dynamically 
       textView.setText(collectionInfo.get(v).getCatName()); 
       FrameLayout.LayoutParams lpText = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER); 
       // Note: LinearLayout.LayoutParams 's gravity was not working so I putted Framelayout as 3 paramater is gravity itself 
       //lpText.gravity = Gravity.BOTTOM | Gravity.CENTER; 
       textView.setTextColor(Color.parseColor("#43A047")); 
       textView.setLayoutParams(lpText); 
       /*--------------end of Text view----------------------------*/ 

       //Adding views at appropriate places 
       frameLayout.addView(imgView); 
       frameLayout.addView(textView); 
       linearLayout.addView(frameLayout); 

      } 

трюк, который работает здесь, - это идентификатор, который я присвоил ImageView «imgView.setId (v)», и после этого, применяя onClickListener к этому, я снова получаю идентификатор вида ...

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

Смежные вопросы