J'ai un GridLayout simple qui contient deux textviews et deux editexts sur chaque ligne. Le Gui est comme ça editText ne remplit pas toute la colonne de gridLayout
Je veux que les deux editexts remplissent tout l'espace libre du gridLayout.
Le GridLayout et les editexts sont ajoutés programatically avec le code suivant:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ScrollView indexDefRootView = (ScrollView) rootView.findViewById(R.id.scrollViewContainer2);
GridLayout gridLayout = new GridLayout(getActivity());
gridLayout.setColumnCount(4);
gridLayout.setRowCount(20);
int tmpIndex = 0;
// Drawable drawable = getResources().getDrawable(R.drawable.backtextcom);
for (int i = 1; i < 20; i++) {
if (true) {
TextView tv = new TextView(getActivity());
tv.setPadding(60, 0, 10, 30);
Spec row = GridLayout.spec(tmpIndex);
Spec col = GridLayout.spec(0);
tv.setText("Left Text " +(i-1));
GridLayout.LayoutParams first = new GridLayout.LayoutParams(row, col);
gridLayout.addView(tv, first);
EditText editText1 = new EditText(getActivity());
//editText1.setBackground(drawable);
editText1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.height = ViewGroup.LayoutParams.WRAP_CONTENT;
param.width = GridLayout.LayoutParams.WRAP_CONTENT;
param.rowSpec = GridLayout.spec(tmpIndex);
param.columnSpec = GridLayout.spec(1);
editText1.setLayoutParams(param);
gridLayout.addView(editText1);
TextView tv1 = new TextView(getActivity());
tv1.setText("Right Text View "+i);
tv1.setPadding(60, 0, 10, 30);
row = GridLayout.spec(tmpIndex);
col = GridLayout.spec(2);
first = new GridLayout.LayoutParams(row, col);
gridLayout.addView(tv1, first);
EditText editText2 = new EditText(getActivity());
//editText2.setBackground(drawable);
editText2.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
param = new GridLayout.LayoutParams();
param.height = ViewGroup.LayoutParams.WRAP_CONTENT;
param.width = GridLayout.LayoutParams.WRAP_CONTENT;
param.rowSpec = GridLayout.spec(tmpIndex);
param.columnSpec = GridLayout.spec(3);
editText2.setLayoutParams(param);
gridLayout.addView(editText2);
tmpIndex++;
i=i+2;
}
}
indexDefRootView.addView(gridLayout);
return rootView;
}
Tous les commentaires seront appréciés.
Je dois faire ce programme parce que je ne sais pas maintenant beaucoup de lignes auront la disposition de la grille. Une ligne peut également comporter 2 ou 4 colonnes. J'ai mis à jour le code comme vous me suggérez 'param.width = GridLayout.LayoutParams.MATCH_PARENT;' et maintenant le premier editext remplit tout l'espace pour qu'il soit correct. Voir cette image [link] (http://snag.gy/OQmD4.jpg) – aurelianr
Essayez de transmettre l'attribut WEIGHT dans le champ setLayoutParams ou essayez d'utiliser l'attribut ems – Naresh
Je ne sais pas comment utiliser ems dans textview. Montre-moi un exemple s'il te plaît. – aurelianr