setVisible并不总是在运行

时间:2016-03-04 02:31:50

标签: android android-layout

我有LinearLayoutButton,在布局中我有一个SeekBar,当点击按钮我显示或隐藏LinearLayout时,我使用了View.GONEView.Visible隐藏和显示。

它适用于许多设备但是当我在Note Edge或冷却垫中进行测试时它不起作用。

这里发生了什么?

 rlFont = (RelativeLayout) rootView.findViewById(R.id.rlFont);
        ivFont.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ivFont.getDrawable().getConstantState().equals(getActivity().getResources().getDrawable(R.drawable.top_a001).getConstantState())) {
                    ivFont.setImageResource(R.drawable.top_a002);
                    rlFont.setVisibility(View.VISIBLE);
                    rlFont.requestLayout();

                } else {
                    ivFont.setImageResource(R.drawable.top_a001);
                    rlFont.setVisibility(View.GONE);
                    rlFont.requestLayout();

                }
            }
        });

1 个答案:

答案 0 :(得分:1)

这可以解决您的问题,可以切换您的按钮。

boolean isClicked = false;     
    rlFont = (RelativeLayout) rootView.findViewById(R.id.rlFont); 
            ivFont.setOnClickListener(new View.OnClickListener() { 
                @Override 
                public void onClick(View v) {
                    if (!isClicked) {
                        ivFont.setImageResource(R.drawable.top_a002);
                        rlFont.setVisibility(View.VISIBLE);
                        rlFont.requestLayout(); 
                        isClicked = true;

                    } else { 
                        ivFont.setImageResource(R.drawable.top_a001);
                        rlFont.setVisibility(View.GONE);
                        rlFont.requestLayout(); 
                        isClicked = false;
                    } 
                } 
            });