小编Mar*_*dík的帖子

当软键盘可见但不使用全屏标志时,在android中隐藏状态栏

我需要在该输入下创建包含文本输入(EditText)和一些项目列表(TextView-s)的活动.状态栏不可见,只有导航栏可见.用户单击EditText后,需要显示软键盘,但系统UI无法更改(状态栏不可见,导航栏可见).用户必须仍然能够滚动到ListView的底部(以便能够看到ListView中的最后一项),而软键盘仍然可见.

问题是我无法实现此行为 - 仅当我使用标志WindowManager.LayoutParams.FLAG_FULLSCREEN时,状态栏才会保持隐藏状态.但在这种情况下,活动内容不会调整大小,键盘将覆盖ListView底部的少量TextView-s.我在这里发现了许多类似的问题,但没有一个描述我的情况(隐形状态栏+可见软键盘+可见活动的所有布局内容).

似乎键盘显示的时候,android会改变UI的一些标志,所以我试着在之后重新设置它们,但没有成功 - 请参阅方法"hideStatusBar()"的用法.

这是我的代码:

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="EditText"/>

    <ListView
        android:id="@+id/test_list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

活动:

public class TestActivity extends Activity {

    private ListView listView;
    private ArrayAdapter<View> adapter;
    private List<View> views = new ArrayList<>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_content);

        adapter = new ArrayAdapter<View>(this, 0, views) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                return views.get(position);
            }
        };

        listView = (ListView) findViewById(R.id.test_list_view);
        listView.setAdapter(adapter); …
Run Code Online (Sandbox Code Playgroud)

android android-softkeyboard android-fullscreen android-statusbar

7
推荐指数
0
解决办法
2269
查看次数