eygraber
08/02/2023, 5:05 PMimport android.view.View
import androidx.core.view.OnApplyWindowInsetsListener
import androidx.core.view.ViewCompat
suspend inline fun MyCustomView.foo(
crossinline predicate: (view: View) -> Boolean = { it is EditText }
) {
val listener = OnApplyWindowInsetsListener { _, insets ->
...
}
ViewCompat.setOnApplyWindowInsetsListener(this, listener)
}
The androidx code is as follows:
public interface OnApplyWindowInsetsListener {
@NonNull
WindowInsetsCompat onApplyWindowInsets(@NonNull View v, @NonNull WindowInsetsCompat insets);
}
public class ViewCompat {
public static void setOnApplyWindowInsetsListener(@NonNull final View v,
final @Nullable OnApplyWindowInsetsListener listener) {
if (Build.VERSION.SDK_INT >= 21) {
Api21Impl.setOnApplyWindowInsetsListener(v, listener);
}
}
}
but I get an error on the line where I call `setOnApplyWindowInsetsListener`:
Argument type mismatch: actual type is android/view/View.OnApplyWindowInsetsListener but androidx/core/view/OnApplyWindowInsetsListener? was expected
The android.view.View.OnApplyWindowInsetsListener
definition is:
public class View {
public interface OnApplyWindowInsetsListener {
@NonNull
WindowInsets onApplyWindowInsets(@NonNull View var1, @NonNull WindowInsets var2);
}
}
If I fully qualify OnApplyWindowInsetsListener
as androidx.core.view.OnApplyWindowInsetsListener
then there is no error.
I also tried using an import alias for android.view.View
but that didn't help.Ivan Kubyshkin [JetBrains]
08/03/2023, 6:10 AMeygraber
08/03/2023, 6:11 AMgradle assembleDebug
should result in the errorIvan Kubyshkin [JetBrains]
08/04/2023, 7:42 AMeygraber
08/06/2023, 8:55 PM