Android - ListView with Images

时间:2012-03-21 12:41:37

标签: android android-layout

我看到一个应用程序有一个很好的菜单结构,我想在我自己的应用程序中复制,并想知道你认为它是如何完成的以及我应该如何处理它。这是一个截图:

MECRM Image

它来自CRM移动应用程序(MECRM),对我而言,它似乎是带有标题和图像的ListView。但我想知道他们的图像或按钮是否有图像作为背景,因为有两件事情;

1。)第一张图片“公告”被切断,所以如果那是一张ImageView,我不太确定它是否会这样做。 2.)机会图像在按下时具有不同的图像(与所有其他图像一样)。

我想我的问题是我需要使用什么控制来复制它?

4 个答案:

答案 0 :(得分:0)

它似乎是一个包含5列的GridViews集合。列的元素是TextView和ImageView。

答案 1 :(得分:0)

我认为要获得这种类型的布局列表视图是不够的。

您必须将ScrollView用作父级,TextView和GridView作为一个布局,并将每种此类型的布局用作ScrollView中的子级,如下所示。

<强> child_view

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

<强> main_view

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

我希望它可以帮助你。

答案 2 :(得分:0)

使用ListView

绝对可以实现这种视图

您将需要使用自定义getView行为实现自己的ListAdapter。 根据视图的位置,您可以渲染非活动的分隔视图(不可单击),也可以渲染适当类别的网格视图。 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]));
}

您需要为我的custom_adapter_item充气扩充您的gridview布局,但这是包含复杂列表项的自定义列表视图的框架

您的视图层次结构最终会看起来像这样

  • 的ListView
    • Category1Header(LinearLayout))
      • 标题(文本框)
    • Category1Contents(Gridview)
      • Cat1Cont1(LinearLayout)
        • icon(image)
        • description(文本框)
    • Category2Header

你明白了

答案 3 :(得分:-1)

对于这样的事情,我不建议将Listview作为基础。如果您有很多类似的项目应该以类似的方式做出反应,那么Listview是有用的。对于小数量。对于有很多变化的物品,它不是你最好的选择。

作为基础,我会使用线性布局或相对布局(取决于您希望如何对不同的屏幕尺寸做出反应)。

我会使用相应的9补丁背景设置TextViews样式,使其看起来像标题。

对于按钮,我会使用带有选择器的Button小部件作为android:background。

因此,在drawable文件夹中创建一个包含以下代码的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>
相关问题