我在我的Android应用程序中使用数据绑定,但有一个问题没有人能回答我...
如果我的ScrollView包含一些 TextInputLayout ,其中包含 InputditText 元素,如何使用数据绑定滚动到特定的textinputlayout? 现在我使用Butterknife,绑定滚动视图,并必须通过手动方式滚动到该视图的该位置,但我想知道是否有其他方法可以做到这一点。
有人有想法吗?
我在我的Android应用程序中使用数据绑定,但有一个问题没有人能回答我...
如果我的ScrollView包含一些 TextInputLayout ,其中包含 InputditText 元素,如何使用数据绑定滚动到特定的textinputlayout? 现在我使用Butterknife,绑定滚动视图,并必须通过手动方式滚动到该视图的该位置,但我想知道是否有其他方法可以做到这一点。
有人有想法吗?
我编写了一个小型的自定义BindingAdapter,它可以滚动到包含视图ID的变量所定义的位置。 我知道它包含一个findViewById,但对我来说这没问题。
@BindingAdapter("scrollTo")
public static void scrollTo(ScrollView view, int viewId) {
if (viewId == 0) {
view.scrollTo(0, 0);
return;
}
View v = view.findViewById(viewId);
view.scrollTo(0, v.getTop());
v.requestFocus();
}
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="viewModel"
type="com.grumpyshoe.myapp.features.dashboard.viewmodel.DashboardViewmodel"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root_dashboard"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">
<ScrollView
android:id="@+id/bank_account_scroll_wrapper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:scrollTo="@{viewModel.focusedViewId}">
[...]
</LinearLayout>
</layout>
static
关键字。在 @grumpyshoe 的回答中,我也曾经忽略了它。 - tir38scrollTo
函数? - Antonios Tsimourtos