标签: android-viewtreeobserver

为什么在onResume()的View上调用getWidth()返回0?

我读过的所有内容都说您不能在构造函数中调用getWidth()getHeight()在上调用View,但我在中调用它们onResume()。届时是否应该绘制屏幕布局?

@Override
protected void onResume() {
    super.onResume();

    populateData();
}

private void populateData() {
    LinearLayout test = (LinearLayout) findViewById(R.id.myview);
    double widthpx = test.getWidth();
}
Run Code Online (Sandbox Code Playgroud)

android android-layout activity-lifecycle android-view android-viewtreeobserver

9
推荐指数
2
解决办法
2559
查看次数

如何在Android中以编程方式禁用表情符号

我想以编程方式隐藏键盘上的表情符号和自动建议.它适用于某些Android设备,但不适用于所有设备.这是隐藏自动建议的代码:

txtSingupemail.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS 
                           |InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
txtSignuppwd.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
txtSignuppwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

这是我的UI的快照:

在此输入图像描述

这是用户单击signIn按钮时的布局.当用户点击标记为红色的左下角图标时,由于表情符号作为建议,键盘高度会增加.

见下面的快照:

在此输入图像描述

有没有办法以编程方式隐藏键盘上的那些顶级表情符号?

android android-softkeyboard emoji android-viewtreeobserver

8
推荐指数
2
解决办法
9719
查看次数

textView动态更改为较短的文本而不是ellipsize

我有这个代码:

  final ViewTreeObserver[] viewTreeObserver = {myAcco    
    viewTreeObserver[0].addOnPreDrawListener(
        new OnPreDrawListener() {
          @Override
          public boolean onPreDraw() {
            int chipWidth =
                myAccountView.getMeasuredWidth()
                    - myAccountView.getPaddingLeft()
                    - myAccountView.getPaddingRight();
            if (chipWidth > 0) {
              myAccountView.setText(
                  setChipTextWithCorrectLength(
                      getContext().getString(R.string.og_my_account_desc_long_length),
                      getContext().getString(R.string.og_my_account_desc_meduim_length),
                      getContext().getString(R.string.og_my_account_desc_short_length),
                      chipWidth));
              viewTreeObserver[0] = myAccountView.getViewTreeObserver();
              if (viewTreeObserver[0].isAlive()) {
                viewTreeObserver[0].removeOnPreDrawListener(this);
              }
            }
            return true;
          }
        });
  }

  @VisibleForTesting
  String setChipTextWithCorrectLength(
      String longDesc, String mediumDesc, String shortDesc, int clipWidth) {
    if (!isTextEllipsized(longDesc, clipWidth)) {
      return longDesc;
    }
    if (!isTextEllipsized(mediumDesc, clipWidth)) {
      return mediumDesc;
    }
    return shortDesc;
  }

  private boolean isTextEllipsized(String …
Run Code Online (Sandbox Code Playgroud)

user-interface android width textview android-viewtreeobserver

5
推荐指数
1
解决办法
195
查看次数

为什么我们使用ViewTreeObserver#addOnGlobalLayoutListener()

我们为什么使用ViewTreeObserver,任何人都可以解释一下?

在下面的代码creditsViewTextView对象。通过整个代码,我了解到“这是根据条件隐藏一些文本”,但是唯一的原因就是我们为什么要使用它ViewTreeObserver

mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int heightDiff = mainLayout.getRootView().getHeight() - mainLayout.getHeight();

            if (heightDiff > 100) {
                Utils.appLogger("MyActivity", "keyboard opened");
                creditsView.setVisibility(View.GONE);
            }

            if (heightDiff < 100) {
                Utils.appLogger("MyActivity", "keyboard closed");
                creditsView.setVisibility(View.VISIBLE);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-view android-viewtreeobserver

4
推荐指数
2
解决办法
4946
查看次数

视图绘制完成回调

什么事件表示a的抽签View完成?

我了解ViewTreeObserver听众,但我找不到“最终”听众,这表明工作已完成。

android textview android-layout android-view android-viewtreeobserver

2
推荐指数
1
解决办法
4768
查看次数