0

问题标题可能具有误导性,但我认为对于 Android 新手来说是一个常见问题:我有一个带有 a 的活动LinearLayout,并且EditText屏幕底部有一个。当我单击它时,键盘出现在 上EditText,在键入时将其隐藏。有没有办法实现大多数用户的期望,即活动向下滚动直到EditText再次可见?

4

6 回答 6

1

您可以使用 aScrollView来实现这一点。

于 2013-02-10T17:11:51.937 回答
1

您可以ScrollView用作顶视图。并RelativeLayout在其中定义。

定义为

<Scrollview.......>
   <RelativeLayout .....>
         //other view.
   </RelativeLayout >
</Scrollview>
于 2013-02-10T17:13:08.393 回答
1

将您的内容添加LinearLayout到 a中Scrollview,当EditText视图获得焦点时manually scrollScrollView. 就是这样。

于 2013-02-10T17:26:25.493 回答
0

您是否尝试过android:windowSoftInputMode="stateVisible|adjustResize"在清单中添加您的活动?

于 2013-02-11T04:41:14.160 回答
0

如果 adjustResize 仍然无法完全显示您想要的视图,您可以尝试此操作。无论您关注什么视图,都可以创建一个 onTouchListener,然后执行以下操作:

    setOnTouchListener(new OnTouchListener()  {



        Runnable shifter=new Runnable(){
            public void run(){
                try {
                    int[] loc = new int[2];                 
                    //get the location of someview which gets stored in loc array
                    findViewById(R.id.someview).getLocationInWindow(loc);
                    //shift so user can see someview
                    myscrollView.scrollTo(loc[0], loc[1]);   
                }
                catch (Exception e) {
                    e.printStackTrace();
                }   
            }}
        };

        Rect scrollBounds = new Rect();
        View divider=findViewById(R.id.someview);
        myscollView.getHitRect(scrollBounds);
        if (!divider.getLocalVisibleRect(scrollBounds))  {
            // the divider view is NOT  within the visible scroll window thus we need to scroll a bit.
            myscollView.postDelayed(shifter, 500);
        }



    });

//本质上,我们制作了一个可滚动到您希望在屏幕上可见的某个视图的新位置的可运行对象。仅当它不在滚动视图范围内(不在屏幕上)时,您才执行该可运行文件。通过这种方式,它将滚动视图转移到引用的视图(在我的例子中,'someview' 是一个行分隔符)。

于 2014-05-15T23:31:55.330 回答
0

最简单的方法是在清单中添加android:windowSoftInputMode="adjustPan"到您的目标活动。

于 2016-03-17T09:14:56.393 回答