上树吃猫的鱼 2015-08-06 06:46 采纳率: 0%
浏览 3097

windowTranslucentStatus与adjustResize冲突问题

当我一个应用设置adjustResize后EditText弹不起来,设置fitsSystemWindows=“true”后会多出来白边(没有用Toolbar)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 04:09
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于窗口透明度和调整大小的特性相互冲突导致的。在Android中,窗口透明度主要影响的是背景图片是否可见,而调整大小则会影响到布局的实际尺寸。

    如果你希望使用EditText时有更大的空间显示内容,可以尝试以下方法:

    1. 设置EditText为fitSystemWindows属性为false:这将使EditText占据整个屏幕区域,而不是限制其宽度或高度。但是,需要注意的是,如果adjustResize被禁用,则fitSystemWindows也会失效。
    2. 使用LinearLayout作为容器:通过设置fitSystemWindowstrue,并将其放在LinearLayout中,这样可以在不影响其他组件的情况下增加EditText的空间。
    3. 使用FrameLayout代替LinearLayoutFrameLayout可以确保所有子控件都在同一视口中,从而避免了宽度和高度的变化对布局的影响。

    以下是示例代码:

    EditText editText = new EditText(this);
    editText.setSingleLine(true); // 设置为单行模式
    
    // 设置EditText为Fit System Windows
    editText.setPadding(0, 0, 0, 0); // 避免改变宽度和高度
    editText.setLayoutParams(new LayoutParams(FitSystemWindows.LayoutParams.WRAP_CONTENT, FitSystemWindows.LayoutParams.WRAP_CONTENT));
    
    // 将EditText添加到框架布局中
    ViewGroup linearLayout = (ViewGroup) findViewById(R.id.linear_layout);
    linearLayout.addView(editText);
    

    以上就是在设置adjustResizefitsSystemWindows冲突时的一些解决方案。

    评论

报告相同问题?