我正在扩展一个名为Scanlist
的Fragment
。它布局正确,看起来像我想要的那样。问题是我无法在扩展的Fragment
上Override onInterceptTouchEvent
。所以我想扩展ViewGroup
、Override onInterceptTouchEvent
,然后将我的Fragment
添加到ViewGroup
中。当我将我的Fragment
添加到ViewGroup
时,Fragment
不会显示在ViewGroup
内部。我知道ViewGroup
在那里,因为我可以Log
和onInterceptTouchEvent
,但屏幕是空白的。
这是片段:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mRootview = (ViewGroup) inflater.inflate(R.layout.scanlist, container, false);
mRootview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
mSharedData = new SharedData(mContext);
costomListViewArr = mSharedData.getvins();
Resources res = getResources();
mList = (ListView)mRootview.findViewById(R.id.list);
mAdapter = new Scanvinadapter(mActivity, costomListViewArr, res);
mList.setAdapter(mAdapter);
mAdapter.setimplements(this);
ViewGroup vg = new Scanlistview(mContext);
vg.addView(mRootview);
return vg;
}
这是ViewGroup
public class Scanlistview extends ViewGroup{
@SuppressWarnings("unused")
private final String TAG = this.getClass().getSimpleName();
LayoutInflater mInflater;
public Scanlistview(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev){
Log.v(TAG, "onInterceptTouchEvent");
return false;
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
}
}
scanlist.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/flScanlist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/vinlist_bg">
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/vinlist_selector"
android:listSelector="@drawable/vinlist_selector"/>
</FrameLayout>
使用overriden添加自定义FrameLayout而不是FrameLayout方法,而且您实际上并不需要FrameLayout,因为它只有一个子级,所以您可以将自定义ListView放置在布局文件