如何在Toolbar中间添加EditText?布局位置异常问题求助
解决EditText嵌入Toolbar的位置问题
哦,我明白你的问题了——你想把EditText直接整合到Toolbar里,但现在它总是和Toolbar上下分开排列,根本没在同一栏里。这是因为AppBarLayout默认是垂直方向的LinearLayout,你把Toolbar和EditText直接作为它的子View,自然会上下堆叠,而不是让EditText成为Toolbar的一部分。
正确的解决方案:把EditText作为Toolbar的子View
Toolbar本身是一个ViewGroup,你可以直接在它内部添加EditText,这样就能让EditText和Toolbar共享同一栏空间了。修改你的app_bar_nav.xml,把EditText移到Toolbar标签内部,同时可以给Toolbar设置合适的布局方向来调整内部元素的排列:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".NavActivity"> <com.google.android.material.appbar.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <!-- 修改Toolbar内部布局,添加EditText作为子View --> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorBlack" app:popupTheme="@style/AppTheme.PopupOverlay"> <!-- 这里放EditText,作为Toolbar的子View --> <EditText android:id="@+id/myEditText" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorBlack" android:hint="Adresse" android:paddingHorizontal="16dp" android:textColorHint="@color/white" /> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:clickable="true" app:srcCompat="@android:drawable/ic_menu_search" /> <include layout="@layout/content_nav" /> </androidx.coordinatorlayout.widget.CoordinatorLayout>
额外调整建议
- 如果你的Toolbar需要保留返回按钮或者菜单图标,可以给EditText设置
layout_weight="1"并把layout_width设为0dp,让它自动占满剩余空间:<EditText android:id="@+id/myEditText" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@color/colorBlack" android:hint="Adresse" android:paddingHorizontal="16dp" android:textColorHint="@color/white" /> - 你还可以通过
android:gravity属性调整EditText内部文字的对齐方式,或者给EditText设置圆角、边框等样式,让它更贴合Toolbar的视觉风格。
这样修改后,EditText就会完全嵌入到Toolbar中,和Toolbar共享同一高度,不会再上下分开显示啦。
内容的提问来源于stack exchange,提问作者DerHammer123
相关产品推荐
相关产品推荐

