2010-07-09 13 views
8

Desidero creare un'interfaccia con una o due visualizzazioni di elenco che coprano l'intero schermo con due righe. Come posso cambiare la loro altezza in modo che occupino il 50% dello schermo, verticalmente?In Android, come posso impostare l'altezza e la larghezza di un oggetto ListView?

Se è sulla stessa linea, mi piacerebbe sapere come farlo indipendentemente dall'orientamento.

Riguardo alla larghezza; diciamo che ho due listview, ognuno con una riga. Si estendono su tutto lo schermo come descritto sopra. Il listview in basso ha due elementi cliccabili al suo interno che occupano ciascuno il 50% dello spazio sullo schermo, in orizzontale.

È possibile? Se é cosi, come?

risposta

8

Salve il seguente codice verrà utilizzato completamente per creare un'interfaccia con uno o due elenchi di visualizzazioni che coprono l'intero schermo con due righe. Il file Java è il seguente,

public class DoubleListView extends Activity { 
    ListView listView,listView2; 
    String[] titles = {"List 1 title1","List 1 title2","List 1 title3","List 1 title4","List 1 title5","List 1 title6","List 1 title7","List 1 title8","List 1 title9"}; 
    String[] titles2 = {"List 2 title1","List 2 title2","List 2 title3","List 2 title4","List 2 title5","List 2 title6","List 2 title7","List 2 title8","List 2 title9"}; 
    WindowManager wm; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); 
     int height = wm.getDefaultDisplay().getHeight(); 

     listView = new ListView(this); 
     listView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,height/2-15)); 
     listView.setAdapter(new CustomListAdapetr(this, titles)); 

     listView2 = new ListView(this); 
     listView2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,height/2)); 
     listView2.setAdapter(new CustomListAdapetr(this, titles2)); 

     ((LinearLayout)findViewById(R.id.mailLayout)).addView(listView); 
     ((LinearLayout)findViewById(R.id.mailLayout)).addView(listView2); 

    } 
    public class CustomListAdapetr extends BaseAdapter{ 

     private Context mContext; 
     private String[] list; 

     public CustomListAdapetr(Context context, String[] titles) { 
      mContext = context; 
      list = titles; 
     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return list.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return list[position]; 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      CustomView cv; 
      if (convertView == null) { 
       cv = new CustomView(mContext,""+list[position]); 
       } 
      else { 
        cv = (CustomView) convertView; 

        cv.setTitle(list[position]); 

        } 
      return cv; 
     } 

    } 

    private class CustomView extends LinearLayout { 
     public CustomView(Context context, String itemName) { 
      super(context); 
      this.setOrientation(HORIZONTAL); 
      // Here we build the child views in code. They could also have 
      // been specified in an XML file. 


      mTitle = new TextView(context); 
      mTitle.setText(itemName); 

      mTitle.setTextSize(25); 

      addView(mTitle, new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT)); 


      } 
     /**   * Convenience method to set the title of a SpeechView   */ 
     public void setTitle(String title) { 
      mTitle.setText(title); 
      } 
     /**   * Convenience method to set the dialogue of a SpeechView   */ 

     private TextView mTitle; 

     } 

} 

e il file XML è,

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/mailLayout"> 

</LinearLayout> 

Prova questo per ottenere l'interfaccia desiderata.

+0

Anche se sono passato ad altri progetti, mi fiderò dei cinque upvot che hai ottenuto. Se hai provato questa soluzione e funziona, si prega di confermare attraverso un commento. Grazie! – Danny

+1

Sì .. Sta funzionando – VenkaReddy

+0

Voglio dire anche ad altri per evitare il problema "Funziona sulla mia macchina/configurazione/versione di Android". :) Grazie per la risposta! – Danny

Problemi correlati