看了网上的时间线,基本都非常的差劲,不如自己写一个,实现的效果如下,在实现的过程中遇到了2个大的问题:1、gridView显示不全2、listview的item不可点击,那么下面写出我解决这两个问题的办法
一、GridView显示不全的问题
GridView 显示不全是因为ListView和GridView都是可以滚动的,在android中不可以在一个可以滚动的控件中镶嵌另一个可以滚动的控件,那么我们可以通过自定义GridView设置为不滚动。
- MyGridView
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* 自定义的GridView对付listview中镶嵌GirdView的情况
* @author zsl
* @github https://github.com/yy1300326388
* @blog http://blog.csdn.net/yy1300326388
*/
public class MyGridView extends GridView {
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 设置不滚动
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
- XML
<!--使用自定义的MGridView实现ListView当中镶嵌一个GridView的情况 -->
<com.huahuacaocao.flowerpot.view.MyGridView
android:id="@+id/timeline_gv_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:numColumns="4"
android:scrollbars="none" />
- 初始化View
MyGridView gv_update = (MyGridView) findViewById(R.id.timeline_gv_update);
二、ListView的Item不可点击
ListView的Item不可点击 的原因是GridView抢占了焦点,那么我们可以不让它抢占焦点,我们在Item中的根节点添加如下属性,设置聚焦点不向下传递。
- descendantFocusability
android:descendantFocusability="blocksDescendants"
- 示例(timeline_item.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/app_color"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical" >
<TextView
android:id="@+id/timeline_item_tv_report"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/app_marge_10"
android:text="测试"
android:textColor="@color/garywrite"
android:textSize="@dimen/textsize_14" />
<com.huahuacaocao.flowerpot.view.MyGridView
android:id="@+id/timeline_gv_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:numColumns="4"
android:scrollbars="none"
android:verticalSpacing="@dimen/app_marge_5" />
</LinearLayout>
/**
* --------------
* 欢迎转载 | 转载请注明
* --------------
* @author zsl
* @github https://github.com/yy1300326388
* @blog http://blog.csdn.net/yy1300326388
*/
时间: 2024-10-09 02:18:05