Come faccio ad aggiungere a livello di programmazione un tableRow per TableLayout in Xamarin

Così ho il mio layout che contiene un TableLayout definito nel mio layout qui

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/defaultBackground_vert"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainLayout">
<TableLayout
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/table">
</TableLayout>
</LinearLayout>

E io sono l’accesso in my code-behind e cercando di aggiungere un pulsante a una riga della tabella e aggiungere che tablerow alla tabella:

private TableLayout _table
private Button _button
.
.
.
_table = FindViewById<TableLayout>(Resource.Id.table);
_button = new Button(this){Text = "<"};
_button = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
var tableRow = new TableRow(this);
tableRow.AddView(_button, 0);
_table.AddView(tableRow, 0);

Il problema è che il tableRow non viene visualizzato quando ho eseguito la mia applicazione.

avete mai avuto questo problema?

OriginaleL’autore Robert.Watson | 2014-01-07

3 Replies
  1. 9

    È necessario utilizzare TableRow.Layoutparams per i pulsanti.. Prova questo codice.

        TableLayout _table = (TableLayout) findViewById(R.id.table);
    
        LayoutParams layoutParams = new TableRow.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        TableRow tableRow = new TableRow(this);
    
        Button _button = new Button(this);
        _button.setText(">>");
        _button.setLayoutParams(layoutParams);
    
        tableRow.addView(_button, 0);
        _table.addView(tableRow, 0);

    OriginaleL’autore deepdroid

  2. 1

    Ho riscritto il codice di cui sopra, in modo che sarebbe in C# e non Java,
    godere di!

    TableLayout _table = (TableLayout)FindViewById(Resource.Id.tableLayout1);
    
    TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(
            ViewGroup.LayoutParams.MatchParent,
            ViewGroup.LayoutParams.MatchParent);
    
    TableRow tableRow = new TableRow(this);
    
    Button _button1 = new Button(this);
    _button1.Text = "1";
    _button1.LayoutParameters = layoutParams;
    
    Button _button2 = new Button(this);
    _button2.Text = "2";
    _button2.LayoutParameters = layoutParams;
    
    Button _button3 = new Button(this);
    _button3.Text = "3";
    _button3.LayoutParameters = layoutParams;
    
    tableRow.AddView(_button1, 0);
    tableRow.AddView(_button2, 1);
    tableRow.AddView(_button3, 2);
    
    _table.AddView(tableRow, 0);

    OriginaleL’autore iDesireJustice

  3. 1

    se hai convertito il tuo codice in xml sarebbe come

    <TableRow><Button /></TableRow>

    quindi devi aggiungere layoutparams per ogni visualizzazione che si crea a livello di programmazione

     _button = new Button(this){Text = "<"};
    _buttonparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent,ViewGroup.LayoutParams.MatchParent);
    _button.setLayoutParams(_buttonParams);
    var tableRow = new TableRow(this);
    LayoutParams _tableRowParams = new LayoutParams(-1,-2);
    tableRow.setLayoutParam(_tableRowParams);
    tableRow.AddView(_button, 0);
    _table.AddView(tableRow, 0);

    OriginaleL’autore Hanaa Mohamed

Lascia un commento