Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击时按钮不会变为可见_Android_Xml_Visibility - Fatal编程技术网

Android 单击时按钮不会变为可见

Android 单击时按钮不会变为可见,android,xml,visibility,Android,Xml,Visibility,我有一个按钮,我想使可视和不可见的每一个点击的图像视图。 我试过设置不可见/可见,但不起作用 这是我的代码: public class FullScreenImageAdapter extends PagerAdapter { Button btnClose; private Activity _activity; private ArrayList<String> _imagePaths; private LayoutInflater inflat

我有一个按钮,我想使可视和不可见的每一个点击的图像视图。 我试过设置不可见/可见,但不起作用

这是我的代码:

public class FullScreenImageAdapter extends PagerAdapter {

    Button btnClose;
    private Activity _activity;
    private ArrayList<String> _imagePaths;
    private LayoutInflater inflater;

    // constructor
    public FullScreenImageAdapter(Activity activity,
                                  ArrayList<String> imagePaths) {
        this._activity = activity;
        this._imagePaths = imagePaths;
    }

    @Override
    public int getCount() {
        return this._imagePaths.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((RelativeLayout) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        TouchImageView imgDisplay;

        inflater = (LayoutInflater) _activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container,
                false);
        hideBar();
        imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay);
        btnClose = (Button) viewLayout.findViewById(R.id.btnClose);
        Picasso.with(_activity)
                .load(_imagePaths.get(position))
                .placeholder(R.drawable.loader)
                .fit()
                .centerCrop().into(imgDisplay);

        // close button click event
        btnClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                _activity.finish();
            }
        });

        imgDisplay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hideBar();
                hideButton();
            }
        });

        ((ViewPager) container).addView(viewLayout);

        return viewLayout;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((RelativeLayout) object);
    }

    public void hideBar() {
        View decorView = _activity.getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

    public void hideButton() {
        if (btnClose.isShown()){
            btnClose.setVisibility(View.INVISIBLE);
        }else{
            btnClose.setVisibility(View.VISIBLE);
        }
    }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.example.shaka.we.ImageHelper.helper.TouchImageView
    android:id="@+id/imgDisplay"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:scaleType="fitCenter" />

<Button
    android:id="@+id/btnClose"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="15dp"
    android:layout_marginTop="15dp"
    android:background="@drawable/redx"
    android:paddingBottom="2dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="2dp"
    android:visibility="invisible"/>

</RelativeLayout>
公共类FullScreenImageAdapter扩展了PagerAdapter{
按钮关闭;
私人活动;
私有ArrayList_ImagePath;
私人充气机;
//建造师
公共FullScreenImageAdapter(活动,
ArrayList图像路径){
这个。_活动=活动;
这是。_imagepath=imagepath;
}
@凌驾
public int getCount(){
返回此项。_imagepath.size();
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图==((RelativeLayout)对象);
}
@凌驾
公共对象实例化项(视图组容器,int位置){
TouchImageView imgDisplay;
充气器=(充气器)\u活动
.getSystemService(上下文布局\充气机\服务);
查看视图布局=充气机。充气(R.layout.layout\u全屏图像,容器,
假);
hideBar();
imgDisplay=(TouchImageView)viewLayout.findViewById(R.id.imgDisplay);
btnClose=(按钮)viewLayout.findViewById(R.id.btnClose);
毕加索。有(_活动)
.load(_imagepath.get(位置))
.占位符(R.drawable.loader)
.fit()
.centerCrop().into(imgDisplay);
//关闭按钮单击事件
btnClose.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
_activity.finish();
}
});
imgDisplay.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
hideBar();
hideButton();
}
});
((ViewPager)容器)。添加视图(viewLayout);
返回视图布局;
}
@凌驾
公共项(视图组容器、int位置、对象){
((ViewPager)容器)。移除视图((RelativeLayout)对象);
}
公共无效hideBar(){
View decorView=_activity.getWindow().getDecorView();
int uiOptions=View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_全屏显示;
decorView.设置系统兼容性(uiOptions);
}
公共无效隐藏按钮(){
if(btnClose.isShown()){
btnClose.setVisibility(视图不可见);
}否则{
btnClose.setVisibility(View.VISIBLE);
}
}
}
这是我的xml:

public class FullScreenImageAdapter extends PagerAdapter {

    Button btnClose;
    private Activity _activity;
    private ArrayList<String> _imagePaths;
    private LayoutInflater inflater;

    // constructor
    public FullScreenImageAdapter(Activity activity,
                                  ArrayList<String> imagePaths) {
        this._activity = activity;
        this._imagePaths = imagePaths;
    }

    @Override
    public int getCount() {
        return this._imagePaths.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((RelativeLayout) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        TouchImageView imgDisplay;

        inflater = (LayoutInflater) _activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container,
                false);
        hideBar();
        imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay);
        btnClose = (Button) viewLayout.findViewById(R.id.btnClose);
        Picasso.with(_activity)
                .load(_imagePaths.get(position))
                .placeholder(R.drawable.loader)
                .fit()
                .centerCrop().into(imgDisplay);

        // close button click event
        btnClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                _activity.finish();
            }
        });

        imgDisplay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hideBar();
                hideButton();
            }
        });

        ((ViewPager) container).addView(viewLayout);

        return viewLayout;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((RelativeLayout) object);
    }

    public void hideBar() {
        View decorView = _activity.getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

    public void hideButton() {
        if (btnClose.isShown()){
            btnClose.setVisibility(View.INVISIBLE);
        }else{
            btnClose.setVisibility(View.VISIBLE);
        }
    }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.example.shaka.we.ImageHelper.helper.TouchImageView
    android:id="@+id/imgDisplay"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:scaleType="fitCenter" />

<Button
    android:id="@+id/btnClose"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="15dp"
    android:layout_marginTop="15dp"
    android:background="@drawable/redx"
    android:paddingBottom="2dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="2dp"
    android:visibility="invisible"/>

</RelativeLayout>

有人能帮我吗

public void hideButton() {
    if (btnClose.isShown()){
        btnClose.setVisibility(View.INVISIBLE);
    }else{
        btnClose.setVisibility(View.VISIBLE);
    }
}
调用
isShown
不是检查视图是否显示或可见的好方法。检查其实际可见性,如下所示

public void hideButton() {
    if (btnClose.getVisibility() != View.VISIBLE){
        btnClose.setVisibility(View.VISIBLE);
    }else{
        btnClose.setVisibility(View.INVISIBLE);
    }
}

您可以使用
view.getVisibility()
view.isShow()
检查视图是否可见。但是请记住:
isShow()返回此视图及其所有祖先的可见性。如果此视图及其所有祖先都可见,则为True,
,并且
getVisibility()返回此视图的可见性状态,即可见、不可见和消失。如果此视图可见,则为True
。在您的情况下,该按钮的父项始终可见,因此
btnClose.isShown
为true,因此您始终执行
btnClose.setVisibility(View.INVISIBLE)当您单击imageview时。

代码的哪一部分负责使其可见?您是否尝试过放入日志或断点以查看是否达到预期的代码块?您可以检查此问题以获取帮助:我检查了它。这对我不起作用。我会继续找的。谢谢。我试过了,它现在显示了按钮的正确状态,但不会隐藏它。它在做什么呢?我添加了以下代码:'public void hideButton(){if(btnClose.getVisibility()==View.VISIBLE){Toast.makeText(_activity,“Turn invisible”,Toast.LENGTH_SHORT)。show();btnClose.setVisibility(View.invisible)}else{btnClose.setVisibility(View.VISIBLE);Toast.makeText(_activity,“Turn VISIBLE”,Toast.LENGTH_SHORT)。show();}它总是显示Turn Invisible,但不会设置visibility off。这个类的特殊之处在于TouchImageView它只是一个简单的适配器