2010-07-09 30 views
8

Ekranın tamamını en çok iki satır içeren bir veya iki liste görünümüne sahip bir arayüz oluşturmak istiyorum. Yüksekliğini, ekranın% 50'sini dikey olarak alacak şekilde nasıl değiştirebilirim?Android'de bir ListView öğesinin yüksekliğini ve genişliğini nasıl ayarlayabilirim?

Aynı satır boyunca ilerlerse, yönlendirmeden bağımsız olarak bunu nasıl yapacağımızı bilmek isterim.

Genişlik ile ilgili olarak; Her birinde bir satır bulunan iki tane liste var diyelim. Ekranı yukarıda açıklandığı gibi kapsarlar. Alt liste görünümünde, her birinin ekran alanının% 50'sini, yatay olarak almasını sağlayan iki tıklanabilir öğesi vardır.

Bu mümkün mü? Öyleyse nasıl?

cevap

8

Aşağıdaki kod, ekranın tamamını iki sırayla kaplayan bir veya iki liste görünümüne sahip bir arabirim oluşturmak için tam olarak kullanacaktır.

<?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> 

bu istediğiniz arabirimi almaya çalışın, aşağıdaki gibi Java dosyası,

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; 

     } 

} 

Ve xml dosyasıdır.

+0

Diğer projelere geçtiğim halde, aldığın beş dile güveniyorum. Bu çözümü denediyseniz ve işe yarıyorsa, lütfen bir yorum ile onaylayın. Teşekkürler! – Danny

+1

Evet .. Çalışıyor – VenkaReddy

+0

Diğerlerinin yanı sıra "benim makinemde/yapılandırma/Android sürümünde çalışır" sorununu önlemek için diğerlerini kastediyorum. :) Cevap için teşekkürler! – Danny

İlgili konular