2011-11-09 55 views
0

下面是用于在屏幕的主要布局:的Android列表视图宽度概率

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/splashContent" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/splashscreenbg"> 
    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight=".008" 
     android:gravity="center" 
     android:background="@drawable/mbstabtitle_bg" 
     android:paddingTop="5dip" 
     android:paddingBottom="5dip"> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center" > 
      <TextView 
       android:id="@+id/mbstabtitle_bg" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:textStyle="bold" 
       android:text="Please Select Your Location" 
       android:textColor="#FFFFFF"> 
      </TextView>  
     </LinearLayout> 
    </TableRow> 
    <TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="top" 
     android:layout_weight=".99"> 
     <ListView 
      android:id="@+id/locationlist" 
      android:background="#7B0326" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
     </ListView> 
    </TableRow> 
</TableLayout> 

这里是用来填充列表视图的适配器。

class LocationAdapter extends BaseAdapter { 
     private Activity activity; 
     private String[][] data; 
     private LayoutInflater inflater=null; 

     public LocationAdapter(Activity a, String[][] d) { 
      activity = a; 
      data=d; 
      inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     public int getCount() { 
      return data.length; 
     } 

     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      View vi=convertView; 
      ViewHolder holder; 
      if(convertView==null){ 
       vi = inflater.inflate(R.layout.locationitem, null); 
       holder=new ViewHolder(); 
       holder.locationName=(TextView)vi.findViewById(R.id.locationName); 

       vi.setTag(holder); 
       if(position%2 == 0) 
        vi.setBackgroundColor(0xFF4D0418); 
       else 
        vi.setBackgroundColor(0xFF7B0326); 
      } 
      else 
       holder=(ViewHolder)vi.getTag(); 

      holder.locationName.setText(data[position][1]);   

      vi.setId(Integer.parseInt(data[position][0])); 

      return vi; 
     } 

     class ViewHolder { 
      TextView locationName; 
     } 
    } 

这里是项目(locationitem.xml)的xml。现在

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_vertical"> 
    <ImageView 
     android:id="@+id/centerbullet" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="3dip" 
     android:src="@drawable/centerbullet"/> 
    <TextView android:id="@+id/locationName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textStyle="bold" 
     android:paddingLeft="10dip" 
     android:text="hello hello egele efsdffgxnd" 
     android:textSize="15dip" /> 
</LinearLayout> 

我的问题是列表视图,并采取以显示它所需的只是最小宽度在它的项目,而我想,它需要提供的总宽度。我的代码中有什么问题?

+2

尝试直接在列表视图,而不是表行设置重.. – Hanry

+0

+1的伎俩,但告诉我是可以给予权重表行,并从中找到解决方案如果是,怎么样? ..请在下面回答你的答案。 – MKJParekh

+0

是的,它可以给layout_weight,但它适用于高度,而不是宽度。对于宽度,请使用android:layout_width =“fill_parent” –

回答

2

在ListView中的android:layout_weight =“1”解决了这个问题。

-1

使用可以使用样式

style="?android:attr/spinnerItemStyle"