TextView
Bottomsheet
Bottomsheet
第一次design-23.2.1
展开时未显示包装的多行文字,但在折叠后自行调整。所以我使用<android.support.design.widget.CoordinatorLayout>
......
<LinearLayout
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:behavior_peekHeight="@dimen/bottom_sheet_peek_height"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"/>
</android.support.design.widget.CoordinatorLayout>
库中的Bottomsheet。
我的布局文件如下所示:
Bottomsheet
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="false" />
...
</LinearLayout>
的内容基本上是一个列表:
Bottomsheet
问题是,只要STATE_EXPANDED
设置为TextView
第一次,…
是单行并且文字被包装,并且没有省略号STATE_COLLAPSED
在行尾。
然后在设置为TextView
之后,STATE_COLLAPSED
的高度很好且多线条正确。
我知道在设置为bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_EXPANDED) {
bottomSheetBehavior.onLayoutChild(coordinatorLayout,
bottomSheetView,
ViewCompat.LAYOUT_DIRECTION_LTR);
}
}
........
}
之后发生了高度重新布局,因为我将其从崩溃中滑出并且多行已经存在。
提供了解决方法here。我跟着它并添加了这个:
Bottomsheet
第一次展开Bottomsheet
时确实会重新调整高度。然而,它在扩展动画完成后突然发生。
有没有办法在扩展动画之前调整高度,就像谷歌地图一样?
更新
我发现此问题是因为我在展开之前已将STATE_COLLAPSED
设置为STATE_COLLAPSED
。如果没有设置那么问题就会消失,第一次正确调整高度。
现在我的问题是:为什么在扩展之前将其设置为package com.jabong.karaf.decanter.appender.elklog;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
public class ELKLogAppender implements EventHandler {
@Override
public void handleEvent(Event event) {
for (String name : event.getPropertyNames()) {
System.out.println("Custom Debraj" + name + ":" + event.getProperty(name));
}
}
}
会导致该问题?
答案 0 :(得分:1)
如果由于某种原因你仍然需要使用旧的支持库,这里有解决方法。
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull final View bottomSheet, int newState) {
bottomSheet.post(new Runnable() {
@Override
public void run() {
//workaround for the bottomsheet bug
bottomSheet.requestLayout();
bottomSheet.invalidate();
}
});
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
答案 1 :(得分:0)
切换到设计库24.0.0后,问题再也无法再现。
感谢Android团队的努力,让我们的生活更轻松,更轻松。