2014-12-18 4 views
0

В моем приложении я использовал сетку, и в каждой сетке есть изображение. Теперь моя проблема заключается в расположении между сетками очень высока. Я хочу уменьшить пространство между сетками. Пожалуйста, помогите мне.Как уменьшить размер сетки и размер столбца в android?

в макете XML я использовал

android:verticalSpacing="10dp" 
android:horizontalSpacing="10dp" 

теперь я получил прямоугольную форму вокруг каждого изображения в Xml

мой XML для GridView.

<GridView 
    android:id="@+id/gridview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:gravity="center"/> 

активность:

public class MainActivity extends Activity { 
GridView grid; 
RelativeLayout r1; 
int maxrows, maxcol; 
ArrayList<LayoutData> data = new ArrayList<LayoutData>(); 
ArrayList<HashMap<String, String>> sheetdetails = new ArrayList<HashMap<String, String>>();  
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    grid=(GridView)findViewById(R.id.gridview); 

    new GetRoute().execute("http://sb2.reloadit.in/TravelServices.asmx/Getlayout"); 

    } 

private class GetRoute extends AsyncTask<String, Void, JSONObject> { 
     /*String mJourneyDate; 
     public GetData(String pJourneyDate) { 
      this.mJourneyDate = pJourneyDate; 
     }*/ProgressDialog pd = null; 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 

       pd = ProgressDialog.show(MainActivity.this, "", "Loading...", true); 
      } 

      @Override 
      protected JSONObject doInBackground(String... params) { 
       String response; 

       try { 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpPost httppost = new HttpPost(params[0]); 
        List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); 
        nameValuePair.add(new BasicNameValuePair("RouteScheduleID","434145405")); 

        nameValuePair.add(new BasicNameValuePair("JourneyDate","2014-12-18")); 


        httppost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
        HttpResponse responce = httpclient.execute(httppost); 

        HttpEntity httpEntity = responce.getEntity(); 

        response = EntityUtils.toString(httpEntity); 
        Log.d("response is", response); 

        return new JSONObject(response); 

       } catch (Exception ex) { 

        ex.printStackTrace(); 

       } 

       return null; 
      } 

      @Override 
      protected void onPostExecute(JSONObject result) 
      { 
       super.onPostExecute(result); 
       //Log.v("TAG_RESULTadapter",""+result); 

       pd.dismiss(); 
       if(result != null) 
       { 
        try 
        { 


         JSONObject jobj = result.getJSONObject("Response"); 
         String message = jobj.getString("Message"); 
         String issuceess = jobj.getString("IsSuccess"); 

         if(issuceess.equals("true")) 
         { 

          JSONObject layout = result.getJSONObject("Layout"); 
          // Log.v("TAG_routearray",""+layoutarray); 
           maxrows=layout.getInt("MaxRows"); 

           maxcol=layout.getInt("MaxColumns"); 
           grid.setNumColumns(maxcol); 


           JSONArray routearray = layout.getJSONArray("SeatDetails"); 
           for (int i = 0; i < routearray.length(); i++) { 

           String Row = routearray.getJSONObject(i).getString("Row"); 
          // Log.v("TAG_routearray",""+Row); 
           String Col = routearray.getJSONObject(i).getString("Col"); 
           String Height = routearray.getJSONObject(i).getString("Height"); 
           String Width = routearray.getJSONObject(i).getString("Width"); 
           String SeatNo = routearray.getJSONObject(i).getString("SeatNo"); 
           String Gender = routearray.getJSONObject(i).getString("Gender"); 

            String Deck = routearray.getJSONObject(i).getString("Deck"); 
            String IsAvailable = routearray.getJSONObject(i).getString("IsAvailable"); 
            String Fare = routearray.getJSONObject(i).getString("Fare"); 
            LayoutData ld= new LayoutData(); 
            ld.setRow(Row); 
            ld.setCol(Col); 
            ld.setHeight(Height); 
            ld.setWidth(Width); 
            ld.setSeatno(SeatNo); 
            ld.setGender(Gender); 
            ld.setDeck(Deck); 
            ld.setIsavailable(IsAvailable); 
            ld.setFare(Fare); 
            data.add(ld); 



           Log.v("TAG_Maxfare",""+Fare); 
           HashMap<String, String> map = new HashMap<String, String>(); 
           map.put("Row", Row); 
           map.put("Col", Col); 
           map.put("Height", Height); 
           map.put("Width", Width); 
           map.put("SeatNo", SeatNo); 
           map.put("Deck", Deck); 
           map.put("IsAvailable", IsAvailable); 
           if(SeatNo.equalsIgnoreCase("")){ 
            map.put("seat_img", ""+R.drawable.noseat); 
            } 
           else{ 
             if(IsAvailable.equalsIgnoreCase("false")){ 
              map.put("seat_img", ""+R.drawable.seatgreen); 
             } 
            /* if(IsAvailable.equalsIgnoreCase("false")){ 
              map.put("seat_img", ""+R.drawable.seatgreen); 
             }*/else if(IsAvailable.equalsIgnoreCase("true")){ 
              map.put("seat_img", ""+R.drawable.seat); 
             } 
            } 
           map.put("Fare", Fare); 
           sheetdetails.add(map); 

           } 
           CustomGrid adapter = new CustomGrid(MainActivity.this, sheetdetails); 
           grid.setAdapter(adapter); 

         } 
        } 


        catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 
       else 
       { 
        Toast.makeText(MainActivity.this, "Network Problem", Toast.LENGTH_LONG).show(); 
       } 
      } 
} 

на основе JSON я добавил строку и COL в виде сетки

Customgrid:

package com.app.redbuslayout; 

import java.util.ArrayList; 
import java.util.HashMap; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomGrid extends BaseAdapter{ 
    private Context mContext; 
    ArrayList<HashMap<String, String>> sheetdetails = new ArrayList<HashMap<String, String>>(); 
    public CustomGrid(Context c,ArrayList<HashMap<String, String>> sheetdetails) { 
     mContext = c; 
     this.sheetdetails= sheetdetails; 
    }@Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return sheetdetails.size(); 
    }@Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return sheetdetails.get(position); 
    } 
    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (convertView == null) { 
      grid = new View(mContext); 
      grid = inflater.inflate(R.layout.row_grid, null); 

      ImageView imageView = (ImageView) grid.findViewById(R.id.grid_image); 

      HashMap<String, String> map = sheetdetails.get(position); 
      imageView.setImageResource(Integer.valueOf(map.get("seat_img"))); 


     } else { 
      grid = (View) convertView; 
     } 

     return grid; 
    } 
    } 

rowgrid:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="5dp" 
    android:background="#ffffff" > 


    <ImageView 
     android:id="@+id/grid_image" 
     android:layout_width="wrap_content" 
     android:layout_marginTop="15dp" 

     android:layout_height="wrap_content"> 
    </ImageView> 

</LinearLayout> 
+0

введите здесь свой код :) – MilapTank

+0

Сначала попробуйте исправить, сколько столбцов вы хотите в своем GridView, после этого используйте padding в gridview_item. –

+0

столбцы основаны на обслуживании. количество столбцов динамическое. Я получаю это от службы. –

ответ

0

Вы можете использовать android:numColumns="any_integer" для определения количества штук в одной строке.

Например, у вас есть 5 предметов, и вы хотите уменьшить горизонтальное расстояние между ними. Вы должны положить как android:numColumns="10".

+0

в моем приложении Я динамически устанавливаю количество колод (из службы) –

+0

Вы говорите об уменьшении горизонтального расстояния или вертикального интервала? –

+0

как вертикальные, так и горизонтальные. –

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