You can set the height of each LinearLayout TextView that you inflate in your GridView adapter to screenHeight / 3.
In getView, after inflating the textView xml, draw an inflated view of LinearLayout and set its height as:
LayoutInflater li = getLayoutInflater(); LinearLayout ll = (LinearLayout) li.inflate(R.layout.menu_items, null); int screenHeight = ((Activity) context).getWindowManager() .getDefaultDisplay().getHeight(); ll.setMinimumHeight(screenHeight/3);
Edit
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
text_item.xml
<?xml version="1.0" encoding="UTF-8"?> <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="wrap_content" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/grid_item_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" tools:ignore="InefficientWeight" android:padding="0dp" android:textSize="12sp" > </TextView> </LinearLayout>
MainActivity.java
public class MainActivity extends Activity { String[] str = { "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" , "1", "2", "3", "1", "2", "3", "1", "2", "3" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); GridView gridView = (GridView) findViewById(R.id.gridView1); gridView.setAdapter(new myGridAdapter(this, str)); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { } }); } public class myGridAdapter extends BaseAdapter { private Context context; private String[] mobileValues; public myGridAdapter(MainActivity mainActivity, String[] arrayEmpty) { this.context = mainActivity; this.mobileValues = arrayEmpty; } public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout gridView; if (convertView == null) {
In getView, what I did was I blew text_item.xml 9x9 times in which I dynamically set the height of the text_item layout to screenHeight / 9. Let me know if this works for you or not.
Edit 2
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:numColumns="9" android:padding="0dp" android:background="#000000" android:horizontalSpacing="3dp" android:verticalSpacing="3dp" android:stretchMode="columnWidth" > </GridView> </LinearLayout>
text_item.xml
<?xml version="1.0" encoding="UTF-8"?> <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="wrap_content" android:gravity="center" android:background="#FFFFFF" android:orientation="vertical" > <TextView android:id="@+id/grid_item_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" tools:ignore="InefficientWeight" android:padding="0dp" android:textSize="12sp" > </TextView> </LinearLayout>