Android 键盘在scrollview中隐藏编辑文本

Android 键盘在scrollview中隐藏编辑文本,android,scrollview,android-linearlayout,android-softkeyboard,Android,Scrollview,Android Linearlayout,Android Softkeyboard,代码:- /** * Set Edit text */ private void setUsedList() { for (final InventoryResource inventoryResource : mCurrentUsedResourceList) { final LinearLayout LL = new LinearLayout(InventoryActivity.this); LL.

代码:-

/**
     * Set Edit text
     */
    private void setUsedList() {

        for (final InventoryResource inventoryResource : mCurrentUsedResourceList) {
            final LinearLayout LL = new LinearLayout(InventoryActivity.this);
            LL.setOrientation(LinearLayout.HORIZONTAL);

            final LayoutParams LLParams = new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

            LL.setWeightSum(10f);
            LL.setLayoutParams(LLParams);

            // ResourceName Params
            final LinearLayout.LayoutParams resourceViewParams = new LinearLayout.LayoutParams(
                    0, LinearLayout.LayoutParams.WRAP_CONTENT);
            resourceViewParams.weight = 6f;
            resourceViewParams.setMargins(5, 5, 5, 5);

            // Resource Edittext
            final EditText edtTextResourceName = new EditText(
                    InventoryActivity.this);
            edtTextResourceName.setGravity(Gravity.CENTER);
            edtTextResourceName.setLayoutParams(resourceViewParams);
            edtTextResourceName.setInputType(InputType.TYPE_CLASS_TEXT);
            edtTextResourceName.setTextColor(Color.BLACK);
            edtTextResourceName.setTextSize(16f);
            edtTextResourceName.setBackground(getResources().getDrawable(
                    R.drawable.box_edt_values));

            // Amount Params
            final LinearLayout.LayoutParams amtViewParams = new LinearLayout.LayoutParams(
                    0, LinearLayout.LayoutParams.WRAP_CONTENT);
            amtViewParams.weight = 2f;
            amtViewParams.setMargins(5, 5, 5, 5);

            final EditText edtTextConstructorAmt = new EditText(
                    InventoryActivity.this);
            edtTextConstructorAmt.setGravity(Gravity.CENTER);
            edtTextConstructorAmt.setInputType(InputType.TYPE_CLASS_PHONE);
            edtTextConstructorAmt.setLayoutParams(amtViewParams);
            edtTextConstructorAmt.setTextColor(Color.BLACK);
            edtTextConstructorAmt.setTextSize(16f);
            edtTextConstructorAmt.setBackground(getResources().getDrawable(
                    R.drawable.box_edt_values));


            final EditText edtTextInspectorAmt = new EditText(
                    InventoryActivity.this);
            edtTextInspectorAmt.setInputType(InputType.TYPE_CLASS_PHONE);
            edtTextInspectorAmt.setGravity(Gravity.CENTER);
            edtTextInspectorAmt.setLayoutParams(amtViewParams);
            edtTextInspectorAmt.setTextColor(Color.BLACK);
            edtTextInspectorAmt.setTextSize(16f);
            edtTextInspectorAmt.setBackground(getResources().getDrawable(
                    R.drawable.box_edt_values));

            final InventoryPojo pojo = new InventoryPojo();
            pojo.id = inventoryResource.getOrderNum();
            mOrderNumber += 1;
            pojo.edtResourceName = edtTextResourceName;
            pojo.edtConstructoreAmt = edtTextConstructorAmt;
            pojo.edtInspectoreAmt = edtTextInspectorAmt;
            mUsedList.add(pojo);

            if (mPreference.getString(Preferences.LAN_CULTURE,
                    Constants.CULTURE_HEBREW).equalsIgnoreCase(
                    Constants.CULTURE_ENGLISH)) {
                LL.addView(edtTextResourceName);
                LL.addView(edtTextConstructorAmt);
                LL.addView(edtTextInspectorAmt);
                mLLDetails.addView(LL);
                mLLDetails.invalidate();
            } else {
                LL.addView(edtTextInspectorAmt);
                LL.addView(edtTextConstructorAmt);
                LL.addView(edtTextResourceName);
                mLLDetails.addView(LL);
                mLLDetails.invalidate();
            }
        }
    }
parent=(RelativeLayout)findViewById(R.id.rlParent);
parent.getViewTreeObserver().addOnGlobalLayoutListener(新ViewTreeObserver.OnGlobalLayoutListener()){
公共图书馆{
int heightDiff=parent.getRootView().getHeight()-parent.getHeight();
//如果高度差异大于150,则将键盘视为可见的。
如果(高度差>150){
//主要是它的键盘
setPadding(0,0,0,heightDiff);
}
否则如果(高度差<150){
//键盘离开,重新调整
setPadding(0,0,0,0);
}
}
});
我有一个滚动视图,里面动态地添加了行。我面临的问题是,如果我的视图有10行,那么当我开始键入时,它将不会滚动到最后。例如,在10行的情况下,我可以滚动到7行,然后其他3行不可见,必须按back关闭键盘,然后我可以将值添加到其余3行

我在我的活动清单中为adjustPan添加了inputMode,还添加了android:isScrollContainer=“true”,但它仍然不起作用


任何知道如何解决问题的人。

您可能想和他们一起玩。这里有一个有趣的例子帮助我解决了类似的问题


希望这对你有帮助

你可能想和你的朋友玩一玩。这里有一个有趣的例子帮助我解决了类似的问题


希望这对你有帮助

你可能想和你的朋友玩一玩。这里有一个有趣的例子帮助我解决了类似的问题


希望这对你有帮助

你可能想和你的朋友玩一玩。这里有一个有趣的例子帮助我解决了类似的问题


希望这对你有帮助

您的滚动视图看起来不错。 要进行滚动,您只需在manifiest文件的活动中添加一行


android:WindowsOfInputMode=“adjustResize”

您的滚动视图看起来不错。 要进行滚动,您只需在manifiest文件的活动中添加一行


android:WindowsOfInputMode=“adjustResize”

您的滚动视图看起来不错。 要进行滚动,您只需在manifiest文件的活动中添加一行


android:WindowsOfInputMode=“adjustResize”

您的滚动视图看起来不错。 要进行滚动,您只需在manifiest文件的活动中添加一行


android:WindowsOfInputMode=“adjustResize”

好的,试试这个,它可能会挽救你的事业

  • 首先,在保存此滚动视图的主XML中,为其根(即其父级)指定标识符

  • 第二,android确实为您提供了一个API,它可以告诉您在绘制视图之前分配给它们的视图维度,您可以通过ViewTreeObserver来读取这些维度

  • 使用此代码检查键盘何时充气,充气时,您可以将高度差指定为父视图的填充底部,当键盘离开时,只需重置填充集。这将确保您可以滚动所有隐藏在充气键盘下的视图

    parent = (RelativeLayout)findViewById(R.id.rlParent);
    
    parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
                public void onGlobalLayout(){
                      int heightDiff = parent.getRootView().getHeight()- parent.getHeight();
                      // IF height diff is more then 150, consider keyboard as visible.
                      if(heightDiff > 150){
                          // Its keyboard mostly
                          parent.setPadding(0, 0, 0, heightDiff);
                      }
                      else if(heightDiff < 150){
                           // Keyboard goes away, readjust
                          parent.setPadding(0, 0, 0, 0);
                      }
                   }
             });
    

    好吧,试试这个也许可以挽救你的事业

  • 首先,在保存此滚动视图的主XML中,为其根(即其父级)指定标识符

  • 第二,android确实为您提供了一个API,它可以告诉您在绘制视图之前分配给它们的视图维度,您可以通过ViewTreeObserver来读取这些维度

  • 使用此代码检查键盘何时充气,充气时,您可以将高度差指定为父视图的填充底部,当键盘离开时,只需重置填充集。这将确保您可以滚动所有隐藏在充气键盘下的视图

    parent = (RelativeLayout)findViewById(R.id.rlParent);
    
    parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
                public void onGlobalLayout(){
                      int heightDiff = parent.getRootView().getHeight()- parent.getHeight();
                      // IF height diff is more then 150, consider keyboard as visible.
                      if(heightDiff > 150){
                          // Its keyboard mostly
                          parent.setPadding(0, 0, 0, heightDiff);
                      }
                      else if(heightDiff < 150){
                           // Keyboard goes away, readjust
                          parent.setPadding(0, 0, 0, 0);
                      }
                   }
             });
    

    好吧,试试这个也许可以挽救你的事业

  • 首先,在保存此滚动视图的主XML中,为其根(即其父级)指定标识符

  • 第二,android确实为您提供了一个API,它可以告诉您在绘制视图之前分配给它们的视图维度,您可以通过ViewTreeObserver来读取这些维度

  • 使用此代码检查键盘何时充气,充气时,您可以将高度差指定为父视图的填充底部,当键盘离开时,只需重置填充集。这将确保您可以滚动所有隐藏在充气键盘下的视图

    parent = (RelativeLayout)findViewById(R.id.rlParent);
    
    parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
                public void onGlobalLayout(){
                      int heightDiff = parent.getRootView().getHeight()- parent.getHeight();
                      // IF height diff is more then 150, consider keyboard as visible.
                      if(heightDiff > 150){
                          // Its keyboard mostly
                          parent.setPadding(0, 0, 0, heightDiff);
                      }
                      else if(heightDiff < 150){
                           // Keyboard goes away, readjust
                          parent.setPadding(0, 0, 0, 0);
                      }
                   }
             });
    

    好吧,试试这个也许可以挽救你的事业

  • 首先,在保存此滚动视图的主XML中,为其根(即其父级)指定标识符

  • 第二,android确实为您提供了一个API,它可以告诉您在绘制视图之前分配给它们的视图维度,您可以通过ViewTreeObserver来读取这些维度

  • 使用此代码检查键盘何时充气,充气时,您可以将高度差指定为父视图的填充底部,当键盘离开时,只需重置填充集。这将确保您可以滚动所有隐藏在充气键盘下的视图

    parent = (RelativeLayout)findViewById(R.id.rlParent);
    
    parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
                public void onGlobalLayout(){
                      int heightDiff = parent.getRootView().getHeight()- parent.getHeight();
                      // IF height diff is more then 150, consider keyboard as visible.
                      if(heightDiff > 150){
                          // Its keyboard mostly
                          parent.setPadding(0, 0, 0, heightDiff);
                      }
                      else if(heightDiff < 150){
                           // Keyboard goes away, readjust
                          parent.setPadding(0, 0, 0, 0);
                      }
                   }
             });
    


    请尝试将android:WindowsOfInputMode=“stateVisible | adjustResize”此属性放入包含此视图的avtivity中。@Techfist也不在此工作。不知道为什么它不起作用有一个解决方案可以帮助你,这是最后的手段,我想如果默认参数不起作用,很可能这是从android端中断的。你能把你的代码也放进去吗,这样我就可以帮你了?@Techfist谢谢你的好意回复,我已经添加了代码片段。好的,scorpion,我在下面发布了我的答案,但请确保在你的情况下,不会自动调整大小,因此我会为你提供一个替代解决方案,但要像在d中一样小心