gpt4 book ai didi

android - 如何知道Scroll里面的View是否完全可见

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:55 26 4
gpt4 key购买 nike

标题(屏幕顶部)和选项卡(屏幕底部)之间有 ScrollView 。我想知道 ScrollView 内部的 ImageView 在手机屏幕窗口上是否完全可见。

enter image description here

最佳答案

我建议采用以下方式(该方法类似于 this question 中的方法)。

例如您有以下 xml(我不确定标题和选项卡是什么,所以它们被遗漏了):

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/scroller">
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:id="@+id/image"
android:src="@drawable/image001"
android:scaleType="fitXY" />
</ScrollView>

然后 Activity 可能如下所示:

public class MyActivity extends Activity {

private static final String TAG = "MyActivity";

private ScrollView mScroll = null;
private ImageView mImage = null;

private ViewTreeObserver.OnGlobalLayoutListener mLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final Rect imageRect = new Rect(0, 0, mImage.getWidth(), mImage.getHeight());
final Rect imageVisibleRect = new Rect(imageRect);

mScroll.getChildVisibleRect(mImage, imageVisibleRect, null);

if (imageVisibleRect.height() < imageRect.height() ||
imageVisibleRect.width() < imageRect.width()) {
Log.w(TAG, "image is not fully visible");
} else {
Log.w(TAG, "image is fully visible");
}

mScroll.getViewTreeObserver().removeOnGlobalLayoutListener(mLayoutListener);
}
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Show the layout with the test view
setContentView(R.layout.main);

mScroll = (ScrollView) findViewById(R.id.scroller);
mImage = (ImageView) findViewById(R.id.image);

mScroll.getViewTreeObserver().addOnGlobalLayoutListener(mLayoutListener);
}
}

如果是小图片,它将记录:图片完全可见。

但是,您应该注意以下不一致(根据我的理解):如果您有大图像,但对其进行了缩放(例如,您设置了 android:layout_width="wrap_content")当它看起来缩放时,但实际 ImageView 高度将与图像的完整高度相同(并且 ScrollView 甚至会滚动),所以 adjustViewBounds可能需要。这种行为的原因是 FrameLayout doesn't care about layout_width and layout_height of childs .

关于android - 如何知道Scroll里面的View是否完全可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com