gpt4 book ai didi

android - 如何检查 TextView 是否在 Visible Screen Android 中

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

我想知道我的 TextView 是否在可见屏幕区域内..

我将链接视为: Android - Get the visible area of a view? Android: how to check if a View inside of ScrollView is visible?

但似乎没有什么对我有用。

我用来检查的代码是

    Rect rect = new Rect();
//textview intialized in onCreate as text1
text1.getHitRect(rect);
text1.measure(0, 0);
//layout is the parent layout (linear) in which i am adding the text view
Rect acctualView = new Rect(Math.round(layout.getX()), Math.round(layout.getY()),
Math.round(layout.getX() + layout.getWidth()), Math.round(layout.getY() +layout.getHeight()));

if(Rect.intersects(acctualView, rect))
{
Toast.makeText(context, "visible", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(context, "Not visible ", Toast.LENGTH_LONG).show();
}

textview 和布局的每个宽度和高度都给我 0“零”,

请告诉我如何解决这个问题并知道 View 是否在可见区域内

这是我的完整 Activity 代码

public class MainActivity extends Activity {

private TextView text1, text2, text3, text4, text5, text6;
private Context context;
private LinearLayout layout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getLayoutInflater().getContext();
layout = (LinearLayout) findViewById(R.id.parentLayout);
setTextViews();
checkViewAndUpdate();

}

private void checkViewAndUpdate() {

Rect rect = new Rect();
layout.getHitRect(rect);
if (text1.getLocalVisibleRect(rect)) {
Toast.makeText(context, "visible", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "Not visible", Toast.LENGTH_LONG).show();
}

}

private void setTextViews() {

text1 = new TextView(context);
text2 = new TextView(context);
text3 = new TextView(context);
text4 = new TextView(context);
text5 = new TextView(context);
text6 = new TextView(context);

text1.setText("text1");
text2.setText("text2");
text3.setText("text3");
text4.setText("text4");
text5.setText("text5");
text6.setText("text6");

text1.setTextSize(30);
text2.setTextSize(30);
text3.setTextSize(30);
text4.setTextSize(30);
text5.setTextSize(30);
text6.setTextSize(30);

//layout.removeAllViews();

layout.addView(text1);
layout.addView(text2);
layout.addView(text3);
layout.addView(text4);
layout.addView(text5);
layout.addView(text6);

}

我的布局只包含LinearLayout(空)

最佳答案

正如我在评论中所写,在 onCreate 中检查可见矩形将不起作用。
onCreate 结束时尝试此代码(而不是直接调用 checkAndUpdate())。

 layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
checkViewAndUpdate();
}
});

如果您在 onCreate 中添加 View , View 布局不会完成。是的,这次用户看不到实际 Activity ,并且未设置 View 的实际大小。
onGlobalLayout 将在 View 布局结束(并且 Activity 可见)时调用。
届时,我们就可以得到它们的大小和位置了!

仅供引用,您可以通过在 onGlobalLayout() 中调用 layout.getViewTreeObserver().removeOnGlobalLayoutListener(this) 来移除此监听器

关于android - 如何检查 TextView 是否在 Visible Screen Android 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26460473/

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