gpt4 book ai didi

java - 需要帮助获取内容 View 高度 - Android

转载 作者:行者123 更新时间:2023-12-01 12:39:25 24 4
gpt4 key购买 nike

我需要一些帮助来获取我的自定义 webView CONTENT 高度,请检查下面是我的代码

    webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {

final int displayHeight = webView.getHeight();
final int contentRange = webView.getContentHeight();
final int y = v.getScrollY();


switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:

Log.d("Get webView height ", "" + displayHeight); // Result : 528
Log.d("Get webView content height ", "" + contentRange); // Result : 2112
Log.d("Get webView content scroll top ", "" + y);

return false;

case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_MOVE:

}

return false;
};

上面是我使用 webview.setOnTouchListener 获取自定义 webView 内容高度的代码,该代码有效。

但是,现在我想通过按钮单击获取自定义 WebView 内容高度,但这不起作用,我得到的始终是获取 webView 的高度而不是内容高度,位于按钮单击的代码下方

Button btn = (Button) this.getActivity().findViewById(R.id.btnCLick);

btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

int webViewContentHeight = webView.getContentHeight();

Log.d("Get my custom webView content height", " " + webViewContentHeight); // Result : 528

}
});

如果能给我详细的流程,非常感谢。

最佳答案

我发现渲染后获取 contentHeight 的最佳方法:

在布局中创建您自己的类扩展 WebView 和此类:

public class BKWebView extends WebView {

private Activity yourActivity;

public BKWebView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public BKWebView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

public BKWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}

@Override
public void invalidate() {
super.invalidate();

if (getContentHeight() > 0) {
// WebView has displayed some content and is scrollable.

if (yourActivity != null)
yourActivity.callBackWebView(getContentHeight());

}
}

/**
* @param yourActivity the yourActivity to set
*/
public void setYourActivity(Activity yourActivity) {
this.yourActivity = yourActivity;
}

}

在您的 Activity 中实现回调方法,然后在您的监听器中实现:

private webViewContentHeight;
BKWebView wv;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
wv = (BKWebView) findViewById(R.id.yourwebview);
wv.setYourActivity(this);
...
}

public void callBackWebView(int contentHeight) {
webViewContentHeight = contentHeight;
}


...
Button btn = (Button) this.getActivity().findViewById(R.id.btnCLick);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Get my custom webView content height", " " + webViewContentHeight);
}
});
...

关于java - 需要帮助获取内容 View 高度 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25257826/

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