Cómo hacer que customAdapter rellene la altura de gridview

Estoy trabajando en la aplicación Sudoku. El diseño es GridView 9×9. Cada GridView incluye 9 vistas de texto por customAdapter. Quiero hacer los 9 TextViews para llenar la altura de cada GridView. ¿Cómo?

Esto es lo que estoy teniendo ahora Introduzca aquí la descripción de la imagen

Aquí está myGridAdapter:

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); View gridView; if (convertView == null) { gridView = new View(context); // get layout from text_item.xml gridView = inflater.inflate(R.layout.text_item, null); // set value into textview TextView textView = (TextView) gridView .findViewById(R.id.grid_item_label); textView.setText(mobileValues[position]); } else { gridView = (View) convertView; } return gridView; } ..... } 

Este es el XML para cada elemento de texto

 <?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="fill_parent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/grid_item_label" android:layout_width="match_parent" android:layout_height="fill_parent" android:background="@drawable/cell_shape" android:text="@string/_1" tools:ignore="InefficientWeight" android:textSize="12sp" > </TextView> </LinearLayout> 

Esta es la forma de cada TextView

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <solid android:color="#FFFFFF"/> <stroke android:width="1dp" android:color="#777777" /> </shape> 

Quiero que mi Gridview sea como este Introduzca aquí la descripción de la imagen

Después de aplicar la primera respuesta de bakriOnFire

Introduzca aquí la descripción de la imagen

5 Solutions collect form web for “Cómo hacer que customAdapter rellene la altura de gridview”

Puede establecer la altura de cada LinearLayout de TextView que infla en el adaptador de GridView a screenHeight / 3.

En getView después de inflar el xml del textView, arrojar la vista inflada a LinearLayout y establecer su altura como:

 LayoutInflater li = getLayoutInflater(); LinearLayout ll = (LinearLayout) li.inflate(R.layout.menu_items, null); int screenHeight = ((Activity) context).getWindowManager() .getDefaultDisplay().getHeight(); ll.setMinimumHeight(screenHeight/3); 

Editar

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) { // get layout from text_item.xml gridView = (LinearLayout)inflater.inflate(R.layout.text_item, null); int screenHeight = ((Activity) context).getWindowManager() .getDefaultDisplay().getHeight(); gridView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.MATCH_PARENT, screenHeight/9)); //gridView.setMinimumHeight(screenHeight/9); // set value into textview TextView textView = (TextView) gridView .findViewById(R.id.grid_item_label); textView.setText(mobileValues[position]); } else { gridView = (LinearLayout) convertView; } return gridView; } @Override public int getCount() { // TODO Auto-generated method stub return mobileValues.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } } } 

En el getView lo que he hecho es he inflado el text_item.xml por 9×9 veces, en el que he establecido dinámicamente la altura de diseño de text_item a screenHeight / 9. Déjeme saber si funciona para usted o no.

Editar 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> 

Puede obtener el ancho de altura del dispositivo y para 3 fila n col dividir por 3 ambos y establecer el ancho de altura programmtically puede resolver su problema.

Pruebe este código

 <GridView android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="10dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="3" android:stretchMode="columnWidth" android:verticalSpacing="10dp" > </GridView> 

Esto puede ayudarte

Por favor, eche un vistazo a esta muestra de código abierto para soduku.

http://code.google.com/p/opensudoku-android/

Esto le ayudará a dibujar 9 X9 grdiview.

Hola este código.

 <TextView android:id="@+id/num" android:text="1" android:gravity="center" android:textStyle="bold" android:textColor="@android:color/darker_gray" android:textSize="25sp" android:layout_centerInParent="true" android:layout_width="fill_parent" android:layout_height="fill_parent"> </TextView> 

Dado que GridView funcionará cuando se llame a su adaptador y no tenga una propiedad de altura para cada celda / niño, su mejor opción puede ser crear una imagen de la w / h que desea y establecerla como textView.SetBackGround …

Esto es lo que usé para mi aplicación de Sudoku. Está en la tienda del juego, comprueba por favor hacia fuera la pantalla y déjame saber tus pensamientos.

En la PlayStore – EasySudoku, descarga gratuita – http://tinyurl.com/c4qra79

  • Textview actuar como un terminal
  • Programmatically no puede alinear ImageView en RelativeLayout
  • Formato HTML para TextView
  • Tabs Deslizar dirección en la aplicación de Android de derecha a izquierda
  • Notificación personalizada con vista remota en Android
  • Creación de un fragmento en una ventana emergente - en Android
  • ListView no procesa todos los elementos hasta que interactúa con
  • RecyclerView.ViewHolder no puede vincular la vista con ButterKnife
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.