gpt4 book ai didi

android - 设置android :windowSoftInputMode ="adjustPan"?时如何滚动我的布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:01:33 27 4
gpt4 key购买 nike

我的 Activity 有一个顶栏和一个底栏。顶栏和底栏之间的空间我有一个线性布局,里面有几个编辑 TextView 。因为我不希望每次出现软键盘时都调整布局大小,所以我在 list 中为我的 Activity 设置了 android:windowSoftInputMode="adjustPan"。但是当打开软键盘时,我想向下滚动以选择另一个要输入的编辑文本,这是不允许我这样做的。当我关闭软键盘时,我只能选择底部的编辑文本。这非常烦人和不方便。如何让软键盘的 scrollview 和 ajustpan 模式协同工作?

请帮帮我。非常感谢。

最佳答案

最后,我找到了解决我问题的方法,所以我想分享给将来可能遇到同样问题的人。我的布局的简要说明如下:

<myRelativeLayout>
<topbar.../>
<myscrollView>
<linearLayout>
//all stuff controls:editview,textview,....
</linearLayout>
</myscrollView>
<bottombar.../>

我创建自定义类 myRelativeLayout 扩展 RelativeLayout

public class myRelativeLayout extends RelativeLayout{

public interface OnRelativeLayoutChangeListener {
void onLayoutPushUp();
void onLayoutPushDown();
}

private OnRelativeLayoutChangeListener layoutChangeListener;
public myRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int proposedheight = MeasureSpec.getSize(heightMeasureSpec);
final int actualHeight = getHeight();

if (actualHeight > proposedheight){
// Keyboard is shown
layoutChangeListener.onLayoutPushUp();
} else if(actualHeight < proposedheight){
// Keyboard is hidden
layoutChangeListener.onLayoutPushDown();
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

public void setLayoutChangeListener(OnRelativeLayoutChangeListener layoutChangeListener) {
this.layoutChangeListener = layoutChangeListener;
}

public OnRelativeLayoutChangeListener getLayoutChangeListener() {
return layoutChangeListener;
}

在我的 Activity 中,我只是为 myRelativeLayout 设置 setLayoutChangeListener 以在软键盘显示时隐藏底部栏并在软键盘隐藏时显示底部栏:

myRlayout.setLayoutChangeListener(new OnRelativeLayoutChangeListener() {

@Override
public void onLayoutPushUp() {
// TODO Auto-generated method stub
myBottombar.setVisibility(View.GONE);//in my case i need to setVisibility(View.GONE) to bottombar in order for this bar is not displayed when softkeyboard show up.
}

@Override
public void onLayoutPushDown() {
// TODO Auto-generated method stub
myBottombar.setVisibility(View.VISIBLE);// redisplay myBottombar when keyboard is closed.

}
});

不要忘记为 Activity 设置 android:windowSoftInputMode="adjustResize"。希望这对遇到同样问题的人有用。

关于android - 设置android :windowSoftInputMode ="adjustPan"?时如何滚动我的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240165/

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