【问题标题】:setVisibility(View.VISIBLE) to imageView is not workingsetVisibility(View.VISIBLE) 到 imageView 不起作用
【发布时间】:2017-09-27 20:06:22
【问题描述】:

我已将 imageView 的可见性设置为默认消失。

现在,我想在以下(我的代码)条件为真时使其可见。我已检查条件为真并且我的代码 setVisibility(View.VISIBLE) 也执行但我的代码没有任何变化用户界面。

@Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        addBottomDots(position);
        if(position == layouts.length-1){
            imageView.setVisibility(View.VISIBLE);
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    startActivity(new Intent(MainActivity.this,AlarmActivity.class));
                }
            });
        }
    }

我的 ImageView 的 XML

 <ImageView
    android:id="@+id/startImageView"
    android:layout_width="80dp"
    android:layout_height="40dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:visibility="gone"
    app:srcCompat="@drawable/starthere" />

问题:执行我的代码后,可见性没有改变意味着它仍然不可见

【问题讨论】:

  • 如果点击它,会不会调用onClick方法?
  • @SeanStayn 如果我看不到它(图像视图),我如何检查它点击监听器不是问题,我会管理它。
  • 您可以在 XML 中将可见性设置为可见。仅用于测试,代码是否执行。此外,您可以从 XML 中删除可见性行并将代码更改为“imageView.setVisibility(View.GONE)”。您可以检查问题是在您的方法中还是在其他地方。
  • @SeanStayn 我刚刚在我的活动的 setContentView 之后调用了 imageView.setVisibility(View.VISIBLE) 但也有同样的问题
  • 发布更多代码的要点,这可能会突出任何缺点

标签: android imageview android-imageview visibility


【解决方案1】:

问题是,您不使用 UI 线程:

Activity act = (Activity)context;
act.runOnUiThread(new Runnable(){
@Override
public void run() {
-----
    imageView.setVisibility(View.VISIBLE);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this,AlarmActivity.class));
            }
        });  
-----
} });

【讨论】:

    【解决方案2】:

    你能按照下面的步骤告诉我吗..

    1. xml file 中删除可见性代码。把下面的代码after setContentviewimageView.setVisibility(View.INVISIBLE);

    2. 现在,如果您想再次看到 imageView,请在您的 click listener 中输入以下代码。
      imageView.setVisibility(View.VISIBLE);

    这应该适合你。它之所以有效,是因为visibility gonevisibility invisible 之间存在差异

    View.GONE : 这个视图是不可见的,它不占用任何空间来布局。

    View.INVISIBLE : 这个视图是不可见的,但它仍然占用空间用于布局。

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 2016-09-07
      • 1970-01-01
      • 2016-01-06
      • 2011-05-10
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多