RelativeLayout中的setOnClickListener不起作用

时间:2018-02-15 09:47:36

标签: android

我的Android应用程序中有一个结构

  

LinearLayout> FrameLayout> ImageView(用作FrameLayout   背景)& RelativeLayout> TextView& ImageView的。

当我点击FrameLayoutRelativeLayout或FirstImageView(因为它是较大的区域,textView或第二图像视图很小)时,我需要这样做。

我尝试将setOnClickListener添加到此项目但没有工作。

这是我的代码:

public class HomeFragment extends Fragment {
    View rootView;

    public HomeFragment() {

    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.home_fragment, container, false);

        RelativeLayout paleoFoodBackGround = (RelativeLayout) rootView.findViewById(R.id.relativeLytPaleoFoodHome);


        paleoFoodBackGround.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("1FOOD_LIST", "onClick: ");

            }
        });


        return rootView;
    }

    public void clickFood(){
        Log.d("2FOOD_LIST", "onClick: ");
    }


}

这是我的布局结构:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="50"
android:orientation="vertical"
android:paddingLeft="2.5dp"
android:paddingRight="5dp"
android:weightSum="100">

    <FrameLayout
    android:id="@+id/framePaleoFoodHome"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="50"
    android:paddingBottom="2.5dp">

        <ImageView
        android:id="@+id/imgViewPaleoFoodBackGround"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:scaleType="center"
        app:srcCompat="@drawable/recipes" />

        <RelativeLayout
        android:id="@+id/relativeLytPaleoFoodHome"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"

        >

            <ImageView
            android:id="@+id/imgViewRecipesIconHome"
            style="@style/iconHome"
            app:srcCompat="@drawable/cooking"
            />

            <TextView
            android:id="@+id/txtViewRecipesTxtHome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/textViewHomeSquare"
            android:text="@string/RecipesHome"

            android:layout_below="@id/imgViewRecipesIconHome"/>

        </RelativeLayout>

    </FrameLayout>
    <Framelayout> .... </Framelayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我建议使用ImageButton而不是图像。还要将RelativeLayout设置为android:clickable =“true”。同时设置所有不能用android点击的子视图:clickable =“false”