使用设计支持库与约束布局

3

我试图在ConstraintLayout中使用来自 support design 库的 TextInputLayout,但是遇到了错误:

android.widget.LinearLayout$LayoutParams 
cannot be cast to android.support.constraint.ConstraintLayout$LayoutParams

如何使用ConstraintLayout实现与support.design.widget.TextInputLayout相同的功能?

完整布局如下:http://pastebin.com/TjC0FAdS

问题是:

<android.support.constraint.ConstraintLayout 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"
    android:id="@+id/constraintLayout">

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <AutoCompleteTextView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:singleLine="true"
            android:id="@+id/email"
            android:hint="@string/prompt_email"
            app:layout_constraintLeft_toRightOf="@+id/imageView3"
            android:layout_marginStart="8dp"
            app:layout_constraintTop_toBottomOf="@+id/logo"
            android:layout_marginTop="16dp"
            app:layout_constraintRight_toRightOf="@+id/constraintLayout"
            android:layout_marginEnd="16dp" />
    </android.support.design.widget.TextInputLayout>
</android.support.constraint.ConstraintLayout>

请分享您使用TextInputLayout的代码,并显示崩溃的行。谢谢。 - Gennadii Saprykin
@GennadiiSaprykin,我添加了我的布局。在onCreate尝试填充布局时它崩溃了。 - Max Plakhuta
很不幸,我没有使用ConstraintLayout的经验,所以我不确定。我的猜测是,诸如app:layout_constraintLeft_toRightOf这样的属性需要将ConstraintLayout作为父视图。我建议尝试将这三个属性移动到TextInputLayout标记中,也许那样会起作用。 - Gennadii Saprykin
@GennadiiSaprykin,这是一个很好的想法!将这些属性移动到“TextInputLayout”中使其正常工作。您能回答我的问题吗,这样我就可以接受它了吗? - Max Plakhuta
哦,太好了,很高兴听到这个。我已经发布了我的答案。谢谢。 - Gennadii Saprykin
2个回答

5

类似于 app:layout_constraintLeft_toRightOf 这样的属性需要将 ConstraintLayout 设置为父级视图。将这些属性移动到 TextInputLayout 中,就可以正常工作。


0
根据我的经验,阅读Android文档是一个很好的第一步。模拟器效果不错,但你真正想要从操作系统层面上熟悉设计模式和交互。
如果你或者你的公司有测试设备,我建议使用安卓手机几周时间。我除了打电话/发短信之外,所有事情都用安卓完成。你会开始注意到iOS和安卓之间的细微差别。例如:使用UIAlerts vs Toasts vs Dialogs。

--

了解更多资源,请查看:google.com/design/spec & http://blog.mengto.com/how-to-design-for-android-devices/ 以及 Medium 上的文章。

关于 Android 的文档还好,但最好的学习方法是与之前为 Android 设计过的设计师合作。即使只是为了学习 iOS 和 Android 之间的区别,您也会学到很多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接