我已经使用了Framelayour进行点击活动,并且它在2天之前工作正常,但是现在不知道wat发生了它不起作用。
请有人帮助我。
我的代码如下:
设计:
<FrameLayout
android:id="@+id/flWebpre"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<WebView
android:id="@+id/wvWebsite"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ProgressBar
android:id="@+id/pbWebsite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_gravity="center_horizontal" />
</FrameLayout>
代码:
FrameLayout flWebPre = (FrameLayout) findViewById(R.id.flWebpre);
flWebPre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (isExpanded) {
isExpanded = false;
new CollapseAnimation(slidingPanel, panelWidth,
TranslateAnimation.RELATIVE_TO_SELF, 0.70f,
TranslateAnimation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f,
0, 0.0f);
}
}
});
答案 0 :(得分:20)
一种简单的方法是拦截所有触摸事件。默认情况下,ViewGroup#onInterceptTouchEvent
会返回false
。
您可以创建自定义布局:
public class ClickableFrameLayout extends FrameLayout {
private OnClickListener mOnClickListener;
@Override
public void setOnClickListener(OnClickListener l) {
super.setOnClickListener(l);
mOnClickListener = l;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return mOnClickListener != null;
}
// Standard constructors — just pass everything
public ClickableFrameLayout(final Context context) {
super(context);
}
public ClickableFrameLayout(final Context context, final AttributeSet attrs) {
super(context, attrs);
}
public ClickableFrameLayout(final Context context, final AttributeSet attrs, final int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public ClickableFrameLayout(final Context context, final AttributeSet attrs, final int defStyleAttr, final int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}