2012-03-21 78 views
0

我看到一個應用程序,它有一個漂亮的菜單結構,我想在自己的應用程序中進行復制,並想知道您是如何看待它的,以及如何處理它。下面是截圖:Android - 帶圖像的ListView

MECRM Image

這是從CRM移動應用程序(MECRM)和我來說,這似乎是標題和圖片一個ListView。但是我想知道他們是圖像還是圖像作爲背景的按鈕,因爲有兩件事情。

1.)第一張圖片「公告」被截斷,所以如果這是一個ImageView,我不太確定它是否會做同樣的事情。 2.)機會圖像按下時有不同的圖像(所有其他圖像一樣)。

我想我的問題是我需要用什麼控件來複制這個?

回答

0

這種觀點是絕對有可能使用的ListView

你將需要實現自己的ListAdapter定製getView行爲。 根據視圖的位置,您可以呈現不活動的divider視圖(該視圖不可點擊),也可以爲適當的類別渲染gridview。 This tutorial可以讓你開始使用getView實現自定義適配器。

這裏是什麼getView可能看起來像

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    boolean isDivider = false //TODO logic here 
    if (isDivider){ 
     if (v == null) { 
     LayoutInflater li = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = li.inflate(R.layout.custom_adapter_item, null); 
     } 
     Map<String, String> item = items.get(position); 
     initView(v, item); 
     return v; 
    } else{ 
     View v = null //TODO init divider view here 
     return v; 
    } 
} 

private void initView(View v, Map<String, String> item) { 
    String[] keys = DummyData.columns; 
    ((TextView) v.findViewById(R.id.value_left)).setText(item.get(keys[0])); 
    ((TextView) v.findViewById(R.id.value_right)).setText(item.get(keys[1])); 
} 

你將不得不擡高你的GridView的佈局,我吹我的custom_adapter_item一些示例代碼,但是這是一個複雜的列表自定義列表視圖框架項目

您的視圖層次最終會看起來像這樣

  • 的ListView
    • Category1Header(LinearLayout中))
      • 標題(文本框)
    • Category1Contents(的GridView)
      • Cat1Cont1(的LinearLayout)
        • 圖標(圖像)
        • 描述(文本框)
    • Category2Header

你的想法

+0

花了一段時間,我的頭繞着你在這裏解釋的,但現在我看到它。謝謝! – Robert 2012-03-21 19:51:38

+0

@羅伯特我有時會在我的腦海中跳躍,或者當我超前自我時,就會吝嗇解釋。如果你想澄清一下,請評論。 – 2012-03-21 19:55:32

0

它似乎是一個5列GridView的集合。列的元素是TextView和ImageView。

-1

對於這樣的事情,我不會推薦Listview作爲基礎。如果您有許多類似的項目應該以類似的方式做出反應,那麼Listview就很有用。對於小數量。有很多變化的項目不是你最好的選擇。

作爲基礎,我會使用linearlayout或相對佈局(取決於你如何對不同的屏幕尺寸作出反應)。

我會用一個相應的9補丁背景來設計TextViews,使其看起來像標題。

對於按鈕,我將使用Button小部件作爲android:background作爲選擇器。

因此,在您的可繪製文件夾中創建一個帶有以下代碼的XML文件,並將drawable與drawables的名稱進行交換。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_add_sel0" /> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_add_presssel0" /> 
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_add_press0" /> 
    <item android:drawable="@drawable/btn_add_norm0" /> 
</selector> 
+0

哎呀能取悅某人添加正確的「,以顯示XML。我正在使用我的手機,無法找到正確的字符。 – KarlKarlsom 2012-03-21 13:03:20

+0

我爲你做出了改變,他們很快就會出現給大家......但是我明白你在說什麼。我將不得不嘗試這個並讓你知道。 – Robert 2012-03-21 14:33:32

0

我認爲得到這種類型的佈局列表視圖是不夠的。

您必須將ScrollView用作父級,TextView和GridView作爲一個佈局,並且每個此類佈局都作爲ScrollView中的子級,如下所示。

child_view

<LinearLayout vertical > 
<TextView /> 
<GridView /> 
</LinearLayout> 

main_view

<ScrollView> 
<child_view /> 
<child_view /> 
<child_view /> 
....... 
</ScrollView> 

我希望它可以幫助你。