2012-05-14 35 views
0

圖形佈局中的ListView適合適當的高度,但是當我導入到android設備時,ListView被縮小了一個小字段。我想要的ListView在圖形佈局相同的XML文件,並在實際設備屏幕在圖形佈局和設備中的用戶界面不一樣[Android]

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 

     android:layout_margin="10sp" 
     android:id="@+id/header" 
     > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/id" 
     android:layout_weight="1.25" 
     android:gravity="center"/> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/amount" 
     android:layout_weight="1" 
     android:gravity="center"/> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/alert" 
     android:layout_weight="1" 
     android:gravity="center"/> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/detail" 
     android:layout_weight="1" 
     android:gravity="center"/> 
    </LinearLayout> 

<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:layout_margin="10sp"></ListView> 


<RelativeLayout 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="2.5"> 
<Button 
    android:id="@+id/addQueue" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_margin="10dp" 
    android:text="@string/addQueue"/> 
<Button 
    android:id="@+id/submit" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_margin="10dp" 
    android:text="@string/submit"/> 
    <Button 
    android:id="@+id/reset" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/addQueue" 
    android:layout_centerHorizontal="true" 
    android:layout_margin="10dp" 
    android:text="@string/resetQueue" /> 
</RelativeLayout> 

回答

0

我試圖修改你的佈局。嘗試這可能會對你有所幫助..只需創建一個新的XML佈局文件,並檢查它是否適合你。

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

    <Button 
     android:id="@+id/addQueue" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/submit" 
     android:text="addQueue" /> 

    <Button 
     android:id="@+id/submit" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:text="submit" /> 

    <Button 
     android:id="@+id/reset" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="resetQueue" /> 

    <LinearLayout 
     android:id="@+id/header" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:orientation="horizontal" > 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1.25" 
      android:gravity="center" 
      android:text="text1" /> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="text2" /> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="text3" /> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="text4" /> 

    </LinearLayout> 


    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/addQueue" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/header" > 

    </ListView> 

</RelativeLayout> 

我的自定義適配器類是在這裏。 :

public class my_custom_adapter extends ArrayAdapter<String> { 
    private Context context      = null; 
    String[] elements     = null; 
    private ArrayList<Boolean> itemChecked  = null; 

    public my_custom_adapter(Context context, int type, String[] elements2) 
    { 
     super(context, type, elements2); 
     this.elements = elements2; 
     this.context = context; 
     itemChecked = new ArrayList<Boolean>(); 
     BroadcastReceiver receiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       if (intent.getAction().equals("master_check_change")) { 
        boolean check_value = intent.getBooleanExtra("check_value", false); 
        set_checked(check_value); 
        notifyDataSetChanged(); 
       } 
      } 
     }; 
     context.registerReceiver(receiver, new IntentFilter("master_check_change")); 
     set_checked(false); 
    } 

    // AS EVERY TIME LISTVIEW INFLATE YOUR VIEWS WHEN YOU MOVE THEM SO YOU NEED TO SAVE ALL OF YOUR CHECKBOX STATES IN SOME ARRAYLIST OTHERWISE IT WILL SET ANY DEFAULT VALUE. 
    private void set_checked(boolean is_checked) 
    { 
     for (int i=0; i < elements.length; i++) { 
      itemChecked.add(i, is_checked); 
     } 
    } 

    //THIS IS SIMPLY A CLASS VIEW WILL HOLD DIFFERENT VIEWS OF YOUR ROW. 
    static class ViewHolder 
    { 
     public TextView tv; 
     public CheckBox cb; 
     public ImageView iv; 
    } 

    @Override 
    public View getView (final int position, View convertView, ViewGroup parent) 
    { 
     View rowView = convertView; 
     ViewHolder holder = null; 

     if (rowView == null) { 
      LayoutInflater inflater = (LayoutInflater)context.getSystemService(
               Context.LAYOUT_INFLATER_SERVICE); 
      // HERE I AM INFLATING LISTVIEW LAYOUT. 
      rowView = inflater.inflate(R.layout.inflated_layout, null, false); 
      holder = new ViewHolder(); 
      holder.cb = (CheckBox) rowView.findViewById(R.id.checkBox1); 
      holder.tv = (TextView) rowView.findViewById(R.id.textView1); 
      holder.iv = (ImageView) rowView.findViewById(R.id.imageView1); 
      rowView.setTag(holder); 

     } else { 
      holder = (ViewHolder) rowView.getTag(); 
     } 

     if (holder != null) { 
      holder.tv.setText(elements[position]); 

      holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView, 
              boolean isChecked) { 
        itemChecked.set(position, isChecked); 
       } 
      }); 

      if(position < itemChecked.size()) { 
       holder.cb.setChecked(itemChecked.get(position)); 
      } 
     } 
     return rowView; 
    } 
} 

我的活動類是在這兒,我很創建自定義適配器對象,

public class Test_stflowActivity extends Activity { 
    public CheckBox master_cb = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.temp_layout); 
     String[] elements = new String[10]; 
     for (int i = 0; i < 10; i++) { 
      elements[i] = "elements " + i; 
     } 

     CheckBox master_cb = new CheckBox(getApplicationContext()); 
     master_cb.setText("Check All"); 
     //HERE IS THE LIST VIEW WHICH I HAVE CREATED IN MY XML FILE. 
     ListView lv = (ListView) findViewById(R.id.listView1); 
     //HERE I AM CREATING CUSTOM ADAPTER OBJECT. 
     my_custom_adapter adapter = new my_custom_adapter(this, android.R.layout.simple_list_item_1, elements); 
     lv.addHeaderView(master_cb); 
     lv.setAdapter(adapter); 
     master_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       Intent my_intent = new Intent("master_check_change"); 
       my_intent.putExtra("check_value", isChecked); 
       sendBroadcast(my_intent); 
      } 
     }); 
    } 
} 
+0

不工作就不能滾動列表出來列表框 的我只能看到5個項目 – Korkiat

+0

由於listview有自己的滾動條,所以我認爲它應該滾動listview而不用滾動按鈕底部和textview頂部。如果你想用你的listview滾動它們,那麼只需添加bottons作爲頁腳... –

+0

我已檢查它是否正常工作...如果你想檢查,我張貼我的代碼。只需創建新項目並嘗試使其工作。 –