我的父Linearlayout1
包含两个子框架布局:FrameLayout1
和FrameLayout2
。
FrameLayout1
位于FrameLayout2
之上,但仅涵盖FrameLayout2
的一半。
我将FrameLayout1
替换为某些fragment1
,并将FrameLayout2
替换为fragment2
。
现在,当我点击FrameLayout2
时,FrameLayout1
应该变为不可见。但这种情况并没有发生。
我尝试了以下操作:
userDetails.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.userDetails, container, false);
topLayout = (LinearLayout) getActivity().findViewById(R.id.FrameLayout1);
bottomLayout = (LinearLayout) getActivity().findViewById(R.id.FrameLayout2);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
topLayout.setVisibility(View.GONE);
}
});
}
我还发现onClick监听器的视图没有被点击。
更新:
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/FrameLayout1"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/FrameLayout2"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</FrameLayout>
答案 0 :(得分:2)
您已将OnClickListener设置为整个View而不是bottomLayout。我认为你不能将FrameLayout强制转换为LinearLayout。以下代码在这里工作正常。
final FrameLayout topLayout = (FrameLayout) findViewById(R.id.FrameLayout1);
final FrameLayout bottomLayout = (FrameLayout) findViewById(R.id.FrameLayout2);
bottomLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
topLayout.setVisibility(View.GONE);
}
});
答案 1 :(得分:0)
我认为你必须添加到你的FrameLayout2可点击。尝试添加
android:clickable="true"
然后在你的FrameLayout2中的代码setOnClickListener中。顺便说一下,我认为你应该将topLayout和bottomLayout转换为FrameLayout
而不是LinearLayout
。
请注意,您的framelayouts应该是最终的,以便侦听器类可以访问。
希望有所帮助:)