2012-04-06 8 views
0

1.Dies ist mein Code, wo ich versuche, eine Matrix von Schaltflächen mit Hilfe von Tabellenlayout anzuzeigen. Und ich habe auch versucht, diese Matrix Bildschirm unabhängig zu machen, aber das funktioniert nicht richtig. Im großen Emulator gibt es Problemtasten, die sich überlappen.Wie Sie den Tabellenlayout-Bildschirm unabhängig machen

 TableLayout layout = new TableLayout (this); 
    layout.setStretchAllColumns(true); 
    Display display = ((WindowManager)  getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
      int width = display.getWidth(); 
      int height = display.getHeight(); 
      layout.setLayoutParams(new TableLayout.LayoutParams(height,width)); 

      layout.setPadding(1,1,1,1); 

      for (int f=0; f<=3; f++) 
      { 
       TableRow tr = new TableRow(this); 

       for (int c=0; c<=3; c++) 
       { 
        Button b = new Button (this); 
        b.setText(""+f+c); 
        b.setTextSize(10.0f); 
        b.setTextColor(Color.rgb(100, 200, 200)); 



        tr.addView(b,30,30); 


        final float scale = getBaseContext().getResources().getDisplayMetrics().density; 
        int pixels = (int) (dps * scale + 0.5f); 
        b.setHeight(pixels); 
        b.setWidth(pixels); 


       } // for 
       layout.addView(tr); 
      } // for 

      super.setContentView(layout); 
     } 

     } 

Antwort

1

Sie legen die Layout-Parameter auf eine merkwürdige Weise fest. Versuchen Sie mit:

layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

Das gleiche Problem mit den Tasten. Versuchen Sie, dies zu verwenden:

Button b = new Button (this); 

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT); 
params.gravity = Gravity.CENTER; // if you want it centered 
params.span = 1; 

b..setLayoutParams(params); 

b.setText(""+f+c); 
b.setTextSize(10.0f); 
b.setTextColor(Color.rgb(100, 200, 200)); 

tr.addView(b); 

Und legen Sie nicht die Höhe und Breite Werte mit der "Skala". Der params.span = 1; Teil sollte jedem Element in Ihrer Tabellenzeile die gleiche Breite geben. Und params.gravity = Gravity.CENTER; wird es in der Tabellenzelle zentrieren.

Oder Sie könnten GridLayout verwenden. Sehen Sie es hier: New Layout Widgets: Space and GridLayout

+0

+1 für Gridlayout. –

+0

@PareshMayani Danke Paresh als ich Anfänger Ihre Lösung half mir viel – pragati

Verwandte Themen