2010-07-09 145 views
8

我想創建一個界面,其中有一個或兩個列表視圖最終跨兩個行的整個屏幕。我如何改變它們的高度,使它們垂直佔據屏幕的50%?在Android中,如何設置ListView項目的高度和寬度?

如果沿着同樣的路線,我很想知道如何做到這一點,不管方向如何。

關於寬度;讓我們說我有兩個列表視圖,每個列表視圖都有一行。如上所述,它們跨越整個屏幕。下方的列表視圖中有兩個可點擊的項目,每個項目佔據屏幕空間的50%,水平方向爲

這可能嗎?如果是這樣,怎麼樣?

回答

8

嗨下面的代碼將使用完整的創建一個界面,其中有一個或兩個列表視圖最終橫跨整個屏幕兩行。 Java的文件如下,

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; 

     } 

} 

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

嘗試使用此方法得到您想要的界面。

+0

儘管我已經轉向其他項目,但我會相信你得到的五個讚揚。如果您嘗試了此解決方案並且工作正常,請通過評論確認。謝謝! – Danny 2012-04-12 21:50:31

+1

是的。它工作 – VenkaReddy 2012-04-24 05:56:05

+0

我的意思是別人也避免「它適用於我的機器/配置/ Android版本」問題。 :) 感謝你的回答! – Danny 2012-05-08 07:34:21

相關問題