我有这样的布局:
<CoordinatorLayout>
<RelativeLayout id="parent">
<LinearLayout id="child1"
layout_above="+id/child2"/>
<LinearLayout id="child2"
gravity="bottom"
alignParentBottom="true"
visibility="gone"/>
<FloatingActionButton/>
</CoordinatorLayout>
布局child2
(默认情况下为GONE)中包含EditText
和Button
,垂直对齐。在某些操作后,当焦点位于child2
时,我希望EditText
位于键盘顶部。当该操作发生时,我将child2
的可见性切换为VISIBLE,但问题是当键盘启动时只有EditText
可见,而不是Button
下方的visibility=GONE
。
当我从布局中取出child2
时,它可以正常工作。整个GONE
按预期固定在键盘上,但是当我默认设置EditText
并使其在我的操作中可见时,只有adjustResize
在键盘上方和整个视图中可见没有固定在键盘上。我也在Activity
中尝试了class Tables extends Component{
renderList(data){
return Object.keys(data).map((key, index) => {
return(
<Table
key={ index }
group_name={ key } // Hold group_name
table_date={ data[key] }
/>
);
});
}
render(){
// In here, we create an object array grouped by group_name.
let newGroupArray = this.state.data.reduce((accu, item) => {
// Create new grouped object
accu[item.group_name] = accu[item.group_name] || [];
accu[item.group_name].push(item);
return accu;
}, {});
return(
<section>
{ this.renderList(newGroupArray) }
</section>
);
}
}
,但这也不起作用。有什么想法我错过了吗?
答案 0 :(得分:0)
我意识到我的活动设置了FLAG_FULLSCREEN
,因为它忽略了docs中所述的windowSoftInputMode的值:
窗口标志:隐藏所有屏幕装饰(例如状态栏) 显示此窗口时。这允许窗口使用 整个显示空间为自己 - 状态栏将被隐藏 设置了此标志的应用程序窗口位于顶层。全屏 窗口将忽略SOFT_INPUT_ADJUST_RESIZE的值 window的softInputMode字段;窗口将保持全屏,并将 没有调整大小。
一个相当尴尬的时刻! (捂脸)