выравнивание текстовых представлений - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть макет с TableLayout.Я положил один TableRow в качестве заголовка, с 3 TextViews внутри.Когда я вставляю остальные строки по коду, выравнивание не совпадает с первым рядом.

Расположение:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TableLayout android:id="@+id/tabla_resumen_equipos"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:stretchColumns="0,1,2">
        <TableRow       
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
            <TextView android:id="@+id/nombre_local"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:gravity="left"/>

            <TextView android:id="@+id/acciones"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:gravity="center"/>

            <TextView android:id="@+id/nombre_visitante"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:gravity="center|right"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

Для первого ряда выравнивание отличаетсячем остальные ряды.Спасибо

Редактировать:

Это фрагмент, который использует макет:

public class MyFragment extends Fragment {

    private TableLayout mTableResumenEquipos;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstance){
    View v = (LinearLayout)inflater.inflate(R.layout.resumen_equipos, container,false);
    if (container == null) return null;
    mTableResumenEquipos = (TableLayout) v.findViewById(R.id.tabla_resumen_equipos);
    mTvEquipoLocal = (TextView) v.findViewById(R.id.nombre_local);
    mTvEquipoVisitante = (TextView) v.findViewById(R.id.nombre_visitante);
    mTvAccion = (TextView) v.findViewById(R.id.acciones);

    loadData();
    return v;
}

private void loadData(){

    String argsEquipos[] = new String[]{String.valueOf(mIdEquipoLocal),
            String.valueOf(mIdEquipoLocal), String.valueOf(mIdPartido)};
    mDbEquipos = mDbhPlanilla.getReadableDatabase();

    Cursor cAcciones = mDbEquipos.rawQuery("SELECT a.accion, a.zonaCampo, a.zonaPorteria, j.equipo " 
            + "FROM Acciones a, Jugadores j WHERE (j.equipo = ? OR j.equipo = ?) " + 
            "AND a.partido = ?",argsEquipos);

    // Equipos
    String argLocal[] = new String[]{String.valueOf(mIdEquipoLocal)}; 
    Cursor cEquipoLocal = mDbEquipos.rawQuery("SELECT nombre FROM Equipos WHERE id = ?",argLocal);
    if(cEquipoLocal.moveToFirst()) mTvEquipoLocal.setText(cEquipoLocal.getString(0));

    String argVisitante[] = new String[]{String.valueOf(mIdEquipoVisitante)}; 
    Cursor cEquipoVisitante = mDbEquipos.rawQuery("SELECT nombre FROM Equipos WHERE id = ?",argVisitante);
    if(cEquipoVisitante.moveToFirst()) mTvEquipoVisitante.setText(cEquipoVisitante.getString(0));


    TableRow tr6M = new TableRow(getActivity());
    TextView tv6MLocal = new TextView(getActivity());
    TextView tv6MNombre = new TextView(getActivity());
    TextView tv6MVisitante = new TextView(getActivity());

    tv6MLocal.setText(String.valueOf(gol6MLocal)+ " / " + String.valueOf(total6MLocal) + " ( " + 
            String.valueOf(porc6MLocal) + " )");
    tv6MNombre.setText(getActivity().getString(R.string.seis_metros_corto));
    tv6MVisitante.setText(String.valueOf(gol6MVisit)+ " / " + String.valueOf(total6MVisit) + " ( " + 
            String.valueOf(porc6MVisit) + " )");
    tr6M.addView(tv6MLocal);
    tr6M.addView(tv6MNombre);
    tr6M.addView(tv6MVisitante);
    mTableResumenEquipos.addView(tr6M);


}

1 Ответ

2 голосов
/ 10 ноября 2011

Вам необходимо указать LayoutParams для представлений, которые вы создаете в коде.

Для вас TableRow это будет:

tr6m.setLayoutParams( new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT ) );

А для вашего TextViews это будет:

tv6MLocal.setLayoutParams( new TableLayout.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT, 1 ) );
tv6MNombre.setLayoutParams( new TableLayout.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT, 1 ) );
tv6MVisitante.setLayoutParams( new TableLayout.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT, 1 ) );

Последний параметр - layout_weight, который гарантирует, что ваш TextViews растянется и займет равное количество места.

...