我发现,如果父布局包含android:fitsSystemWindows="true",则在发生与 View 相关的操作时,它将干扰我的BottomSheets定位。

特别是我遇到的那个问题:在textview中的换行符将触发底表偏移system/notif-bar的高度。

换行符+ fitsSystemWindows =将我的底表压低

我消除了所有无关紧要的内容,包括按钮,文本 View 和底表。

  • Button2:setText("1\n2")是神奇的地方

  • 一旦删除android:fitsSystemWindows="true",一切都很好,没有其他奇怪的行为,但是我失去了如何在system/notif-bar中适应SystemWindows颜色的效果。

    我还尝试给我的bottomSheet布局提供自己的android:fitsSystemWindows="false",但是它没有任何作用。

    如何在bottomSheets上没有这种奇怪的偏移行为的情况下实现两个fitsSystemWindows = true?

    你自己看!
    Android:fitsSystemWindows和换行符与bottomSheets发生干扰-LMLPHP
    public class Test extends AppCompatActivity {
        private BottomSheetBehavior bottomSheetBehavior;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.act_test);
    
            LinearLayout bottomSheet = (LinearLayout) findViewById(R.id.root_btmsheet);
            bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
            bottomSheet.post(new Runnable() {
                @Override
                public void run() {
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                }
            });
    
            ((Button) findViewById(R.id.btn1)).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ((TextView) findViewById(R.id.info1)).setText("1");
                }
            });
            ((Button) findViewById(R.id.btn2)).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // the culprit, Mr. Newline
                    ((TextView) findViewById(R.id.info1)).setText("1\n2");
                }
            });
        }
    }
    

    act_test.xml
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"   <-- the other culprit, Ms. Fits
        tools:context=".Test">
    
        <!--<include layout="@layout/act_test_content" />-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:orientation="vertical"
            android:id="@+id/root_content">
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <Button
                    android:id="@+id/btn1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="1" />
                <Button
                    android:id="@+id/btn2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="2" />
            </LinearLayout>
    
            <TextView
                android:id="@+id/info1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#e0e0e0" />
    
        </LinearLayout>
    
        <!--<include layout="@layout/act_test_btmsheet" />-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            app:layout_behavior="@string/bottom_sheet_behavior"
            android:orientation="vertical"
            app:behavior_hideable="false"
            app:behavior_peekHeight="50dp"
            android:background="#5533b5e5"
            android:id="@+id/root_btmsheet">
    
        </LinearLayout>
    
    </android.support.design.widget.CoordinatorLayout>
    

    最佳答案

    即使使用支持库25.1.0,我也遇到了类似的问题。但是后来我发现这可能是因为未使用CollapsingToolbarLayout。我将其包含在内并爆炸!..即使由于换行而导致任何布局更改后,它仍能正常运行

    10-08 18:25