方法 setHalfExpandedRatio(float ratio)
Method setHalfExpandedRatio(float ratio)
这是我在这个令人难以置信的社区中的第一个问题。
我正在用 kotlin 开发 android 应用程序。我需要一个永久底片(不是模态)。我已经开发了我需要的所有行为,但有一个细节。
我需要设置 de STATE_HALF_EXPANDED,默认是屏幕的 50%,但我需要 70%。我访问过这个问题:
在那个问题中,用户 Adauton Heringer 在其中一个答案中解释了如何做。他说:
behavior = BottomSheetBehavior.from(your_bottom_sheet_xml)
behavior.isFitToContents = false
behavior.halfExpandedRatio = 0.6f
我也试过了,因为它看起来很容易做。我做了前两行,但是当我尝试使用 setHalfExpandedRatio() 时,它就像不存在一样。查了官方文档,是public方法
我是不是做错了什么?
我的代码是这样的:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
var bottomSheet: View = view.findViewById(R.id.departures_bottomsheet)
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
bottomSheetBehavior.isFitToContents = false
// this doesn't work for me
// bottomSheetBehavior.halfExpandedRatio = 0.7
bottomSheetBehavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
override fun onSlide(p0: View, dragPoint: Float) {
val upper = 0.66
val lower = 0.33
if (dragPoint >= upper) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
if (dragPoint < upper && dragPoint >= lower) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
}
if (dragPoint < lower) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
}
override fun onStateChanged(p0: View, p1: Int) {
}
} )
}
我有这个导入:
import com.google.android.material.bottomsheet.BottomSheetBehavior
并且在应用程序的 build.gradle 中实施:
implementation 'com.google.android.material:material:1.0.0'
在布局文件中,View 是 CoordinatorLayout 的子视图
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/globalMap"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.circularreveal.CircularRevealLinearLayout
android:id="@+id/departures_bottomsheet"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
app:behavior_peekHeight="80dp"
app:layout_behavior="@string/bottom_sheet_behavior">
我已在 Android Studio 中导航至 BottomSheetBehavior.class,但此方法不存在。
欢迎任何帮助,我将不胜感激。
如果我找不到任何其他方法,我将使用此方法创建一个子类。
从 BottomSheetBehavior.java 提交历史中,方法 setHalfExpandedRatio(float ratio)
是从版本 1.1.0-alpha05 添加的。
您使用的是 vevrsion 1.0.0,所以看不到此方法。
解决方案: 在 gradle 文件中将版本代码从 1.0.0 更改为 1.1.0-alpha05。
// implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha05'
或使用最新版本
// implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.android.material:material:1.2.0-alpha03'
您可以找到所有可用版本 here。
这是我在这个令人难以置信的社区中的第一个问题。
我正在用 kotlin 开发 android 应用程序。我需要一个永久底片(不是模态)。我已经开发了我需要的所有行为,但有一个细节。
我需要设置 de STATE_HALF_EXPANDED,默认是屏幕的 50%,但我需要 70%。我访问过这个问题:
在那个问题中,用户 Adauton Heringer 在其中一个答案中解释了如何做。他说:
behavior = BottomSheetBehavior.from(your_bottom_sheet_xml)
behavior.isFitToContents = false
behavior.halfExpandedRatio = 0.6f
我也试过了,因为它看起来很容易做。我做了前两行,但是当我尝试使用 setHalfExpandedRatio() 时,它就像不存在一样。查了官方文档,是public方法
我是不是做错了什么?
我的代码是这样的:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
var bottomSheet: View = view.findViewById(R.id.departures_bottomsheet)
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
bottomSheetBehavior.isFitToContents = false
// this doesn't work for me
// bottomSheetBehavior.halfExpandedRatio = 0.7
bottomSheetBehavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
override fun onSlide(p0: View, dragPoint: Float) {
val upper = 0.66
val lower = 0.33
if (dragPoint >= upper) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
if (dragPoint < upper && dragPoint >= lower) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
}
if (dragPoint < lower) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
}
override fun onStateChanged(p0: View, p1: Int) {
}
} )
}
我有这个导入:
import com.google.android.material.bottomsheet.BottomSheetBehavior
并且在应用程序的 build.gradle 中实施:
implementation 'com.google.android.material:material:1.0.0'
在布局文件中,View 是 CoordinatorLayout 的子视图
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/globalMap"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.circularreveal.CircularRevealLinearLayout
android:id="@+id/departures_bottomsheet"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
app:behavior_peekHeight="80dp"
app:layout_behavior="@string/bottom_sheet_behavior">
我已在 Android Studio 中导航至 BottomSheetBehavior.class,但此方法不存在。
欢迎任何帮助,我将不胜感激。
如果我找不到任何其他方法,我将使用此方法创建一个子类。
从 BottomSheetBehavior.java 提交历史中,方法 setHalfExpandedRatio(float ratio)
是从版本 1.1.0-alpha05 添加的。
您使用的是 vevrsion 1.0.0,所以看不到此方法。
解决方案: 在 gradle 文件中将版本代码从 1.0.0 更改为 1.1.0-alpha05。
// implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha05'
或使用最新版本
// implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.android.material:material:1.2.0-alpha03'
您可以找到所有可用版本 here。