2013-06-25 2 views
0

Я рассмотрел все предлагаемые решения. Но я не могу получить прокрутку для кода ниже.Почему у меня нет свитка?

Может кто-нибудь поможет ..

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:background="#1A2736" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:layout_height="wrap_content"> 

     <TextView ..../> 

     <GridView...../> 

    </LinearLayout> 
</ScrollView> 
+0

Вы имеете в виду содержание не будет прокручиваться? Насколько высок контент? У вас есть GridView внутри ScrollView, и это «плохо» – FunkTheMonk

+0

Для чего я знаю, что GridView должен иметь возможность прокрутки «из коробки» в качестве ListView. Итак, почему вы хотите добавить возможности прокрутки в уже прокручиваемое представление? –

+0

@FunkTheMonk - контент довольно высок. Мне нужен вид сетки и вы хотите, чтобы она была прокручиваемой. – Newbie

ответ

0
Try this for custom grid view with label : 

    main.xml 
    <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:gravity="top" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="@drawable/appbase" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:background="@drawable/apphome" 
     android:layout_height="fill_parent" 
     > 
    <GridView 
     android:layout_marginTop="35dp" 
     android:id="@+id/grid" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:columnWidth="100px" 
     android:gravity="center" 
     android:horizontalSpacing="20dp" 
     android:numColumns="3" 

     android:stretchMode="columnWidth" 
     android:verticalSpacing="100dp" /> 
</LinearLayout> 
</LinearLayout> 



this is the custom layout for each grid view item 

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

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:scaleType="centerInside" /> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" /> 

    </LinearLayout> 


This is the adapter class 


    public class GridviewAdapter extends BaseAdapter 
    { 
    private ArrayList<String> listCountry; 
    private ArrayList<Integer> listFlag; 
    private Activity activity; 

    public GridviewAdapter(Activity activity,ArrayList<String> listCountry, ArrayList<Integer> listFlag) { 
     super(); 
     this.listCountry = listCountry; 
     this.listFlag = listFlag; 
     this.activity = activity; 
    } 

    @Override 
    public int getCount() { 
     return listCountry.size(); 
    } 

    @Override 
    public String getItem(int position) { 
     return listCountry.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    public static class ViewHolder 
    { 
     public ImageView imgViewFlag; 
     public TextView txtViewTitle; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder view; 
     LayoutInflater inflator = activity.getLayoutInflater(); 

     if(convertView==null) 
     { 
      view = new ViewHolder(); 
      convertView = inflator.inflate(R.layout.gridlayout, parent,false); 

      view.txtViewTitle = (TextView) convertView.findViewById(R.id.text); 
      view.imgViewFlag = (ImageView) convertView.findViewById(R.id.image); 



      convertView.setTag(view); 
     } 
     else 
     { 
      view = (ViewHolder) convertView.getTag(); 
     } 

     view.txtViewTitle.setText(listCountry.get(position)); 
     view.imgViewFlag.setImageResource(listFlag.get(position)); 

     return convertView; 
    } 

    } 


and this is the gridveiactivity class .. 

public class MainActivity extends Activity { 


private GridviewAdapter mAdapter; 
private ArrayList<String> listCountry; 
private ArrayList<Integer> listFlag; 

private GridView gridView; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    prepareList(); 

     mAdapter = new GridviewAdapter(this,listCountry, listFlag); 

     gridView = (GridView) findViewById(R.id.grid); 
     gridView.setAdapter(mAdapter); 

     gridView.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
        long arg3) { 
       Toast.makeText(MainActivity.this, mAdapter.getItem(position), Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

}