我看到一个应用程序有一个很好的菜单结构,我想在我自己的应用程序中复制,并想知道你认为它是如何完成的以及我应该如何处理它。这是一个截图:
它来自CRM移动应用程序(MECRM),对我而言,它似乎是带有标题和图像的ListView。但我想知道他们的图像或按钮是否有图像作为背景,因为有两件事情;
1。)第一张图片“公告”被切断,所以如果那是一张ImageView,我不太确定它是否会这样做。 2.)机会图像在按下时具有不同的图像(与所有其他图像一样)。
我想我的问题是我需要使用什么控制来复制它?
答案 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布局,但这是包含复杂列表项的自定义列表视图的框架
您的视图层次结构最终会看起来像这样
你明白了
答案 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>