2017-02-05 40 views
0

在每個列表項目的旁邊創建帶有XML可繪製的列表視圖之後,出於某種原因,圖像視圖並未以期望的方式顯示。對於每個項目,每個列表項目的頂部只出現一條較小的水平線,而不是可填充每個列表視圖項目的高度。需要做些什麼才能確定圖像的高度?ListView項目中的圖像不填充高度

抽拉/ ic_red.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:width="20dp" /> 
    <solid android:color="@color/red"/> 
</shape> 

抽拉/ ic_yellow.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:width="20dp" /> 
    <solid android:color="@color/yellow"/> 
</shape> 

抽拉/ ic_green.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:width="20dp" /> 
    <solid android:color="@color/green"/> 
</shape> 

fragment_helloworld.xml

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

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

</LinearLayout> 

listitem_helloworld.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <ImageView 
     android:id="@+id/item_img" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:paddingStart="5dp" 
     android:paddingEnd="5dp"/> 

    <TextView 
     android:id="@+id/item_colourtitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:padding="10dp" 
     android:layout_toEndOf="@id/item_img"/> 

</RelativeLayout> 

FragmentHelloWorld.java

public class FragmentHelloWorld extends android.support.v4.app.Fragment { 

    public FragmentHelloWorld() { 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.fragment_helloworld, container, false); 

     // Array of strings for ListView 
     String[] listviewTitle = new String[]{ 
       "Item 1", 
       "Item 2", 
       "Item 3" 
     }; 
     // Array of images for ListView 
     int[] listviewImage = new int[]{ 
       R.drawable.ic_red, 
       R.drawable.ic_yellow, 
       R.drawable.ic_green 
     }; 

     List<HashMap<String, String>> aList = new ArrayList<>(); 

     for (int i = 0; i < 3; i++) { 
      HashMap<String, String> hm = new HashMap<>(); 
      hm.put("listview_title", listviewTitle[i]); 
      hm.put("listview_image", Integer.toString(listviewImage[i])); 
      aList.add(hm); 
     } 

     String[] from = {"listview_image", "listview_title"}; 
     int[] to = {R.id.item_img, R.id.item_colourtitle}; 

     SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.listitem_helloworld, from, to); 
     ListView list_helloworld = (ListView) v.findViewById(R.id.list_helloworld); 
     list_helloworld.setAdapter(simpleAdapter); 
} 

enter image description here

+1

爲什麼不使用線性佈局而不是列表項中的相對佈局? –

+0

啊,好吧。只注意到使用'LinearLayout'而不是'RelativeLayout'。謝謝你的提示。 – MacaronLover

+0

歡迎您:) –

回答

1

你可能想看看這個帖子here

或者你可以嘗試指定的矩形形狀的圖形內容,並使用LinearLayout,這將是簡單的。