2012-02-26 96 views
0

我想有圖標和文本一個ListView但你可以在截圖中看到一個小問題(僅適用於文本的非常小的一部分是可見的!):
On Device Screenshot如何在文本旁邊添加帶圖標的ListView?

這裏在XML文件中創建這個佈局:

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

    <ListView 
     android:id="@+id/ListView01" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    </ListView> 

</LinearLayout> 

// this layout is for single rows 
<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
     <ImageView 
     android:id="@+id/lIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

     <TextView 
     android:id="@+id/lText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
    </LinearLayout> 

編輯:這是我的自定義適配器的getView方法。

public View getView(int position, View convertView, ViewGroup parent) { 
      View myView = convertView;     
      cu.moveToPosition(position); 
      if (convertView == null) { 
       LayoutInflater li = getLayoutInflater(); 
       myView = li.inflate(R.layout.listicon, null); 
       ImageView imageView = (ImageView) myView.findViewById(R.id.lIcon); 
       myView.setLayoutParams(new GridView.LayoutParams(60, 90)); 
       myView.setPadding(8, 8, 8, 8); 
       byte[] b = Base64.decode(cu.getString(2),Base64.DEFAULT); 
       imageView.setImageBitmap(BitmapFactory.decodeByteArray(b, 0, b.length)); 
       TextView textView = (TextView) myView.findViewById(R.id.lText); 
       textView.setText(cu.getString(1)); 
      } 
      //cu.moveToNext(); 
      int catID = cu.getInt(0); 
      myView.setTag((Object) catID); 
      return myView; 
     } 
+1

您明確地將您的列表行項目寬度設置爲90.這是你真正想要的嗎? – Asahi 2012-02-26 13:24:13

+0

Ahhhhhh,謝謝。這一直是問題。我爲我的其他活動複製了此方法,並忘記設置適當的尺寸。 – 2012-02-26 13:30:27

回答

1

嘗試將ListView和TextView中的layout_widthfill_parent

編輯:您正在重置getView中的列表項寬度。要麼刪除或修改您的代碼

+0

仍然不好!... – 2012-02-26 12:57:00

0

使用相對佈局的行並把圖像的文本右如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 
    <ImageView 
    android:id="@+id/lIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

    <TextView 
    android:id="@+id/lText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@id/lIcon"/> 
</RelativeLayout> 
+0

我已經這樣做了,但完全一樣!我想這個問題應該與ListView佈局有關,因爲它沒有擴展到佔用整個可用空間。 – 2012-02-26 12:31:01

0

這與單排在適配器充氣

你應該嘗試使用 LayoutInflater#充氣(layoutId,父母,FALSE) 在這個答案建議的方式: https://stackoverflow.com/a/1662611

+0

這正是我如何創建列表項目。我已經設置了一個自定義的適配器,它擴大了相應的佈局。 – 2012-02-26 12:55:53

+0

只是爲了確認,你已經提供了最後兩個參數: 父(不爲空)和false(對於attachToRoot)? – eladr 2012-02-26 13:01:50

+0

爲了您的參考,我已經在問題中包含了我的適配器的getView。 – 2012-02-26 13:13:55

0

嘗試此佈局的行佈局: 調整您的ID ..還注意到android:layout_toRightOf ID。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 
    <ImageView 
     android:id="@+id/bimage" 
     android:layout_height="20dip" 
     android:layout_width="20dip" 
     android:layout_gravity="left|center" 
     android:layout_marginTop="10dip" 
     android:layout_marginLeft="5dip" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     /> 
    <TextView 
     android:id="@+id/btitle" 
     android:layout_toRightOf="@id/bimage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="8dip" 
     android:paddingLeft="10dip" 
     android:paddingRight="10dip" 
     android:textSize="18dip" 
     android:textColor="#ffffff" 
     android:gravity="center_vertical" 
     /> 
</RelativeLayout> 
+0

這仍然是一樣的。 – 2012-02-26 13:23:25

相關問題