Java安卓学习总结(十三)

第九章 使用布局与组件创建用户界面

有关回滚Gradle版本

今早Android Studio热情洋溢地询问我是否要更新gradle

我热情地选择更新之后我整个项目都不能编译成功了。

无论怎么设置,在新gradle下我的项目编译时都有问题,索性就回到原来的版本。参考这个帖子

其实只要改两个地方,一个是build.gradle(project)里面的插件版本,一个是gradle-wrapper.properties中的文件版本。

这两个东西的版本是要一一对应的,所以链接中的帖子最有用的是下面这个表格。

Plugin versionRequired Gradle version
1.0.0 – 1.1.32.2.1 – 2.3
1.2.0 – 1.3.12.2.1 – 2.9
1.5.02.2.1 – 2.13
2.0.0 – 2.1.22.10 – 2.13
2.1.3 – 2.2.32.14.1+
2.3.0+3.3+
3.0.0+4.1+
3.1.0+4.4+
3.2.0 – 3.2.14.6+
3.3.0 – 3.3.24.10.1+
3.4.0+5.1.1+

有关No resource identifier found for attribute ‘srcCompat’ in package

真不知道是什么玄学问题,复制代码之后就出现这个东西。解决方法在这里

有关ImageView的资源绑定

ImageView的资源绑定似乎仅仅靠.xml中代码是无法实现的,我将一个.xml文件复制到另一个项目时发现并没有连带的绑定图片资源:

需要手动去进行绑定。选中ImageView,在属性视图窗口的src中选择使用的视图资源:

有关约束的属性设置

在最外层容器里面定义了这些东西

<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/com.example.a73421.criminalintent"
    xmlns:app2="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"

不同的属性设置要使用到不同的前缀。比如ConstraintLayout所必须要的约束的前缀都是app

app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_solved" 

参数说明:layout表明是布局参数,constraintEnd(Top)等等是对这个组件的约束位置,toEndOf=”parent”是约束至引号内的组件的某个位置。

有关自定义样式文件

据说第二十二章会具体去做这个东西,我先试了一下。在res\values\style中加入:

<style name="BigTextStyle">
        <item name="android:textSize">30sp</item>
        <item name="android:padding">3dp</item>
    </style>

表明创建了一个叫BigTextStyle的样式,引用时将原本的

style="?android:listSeparatorTextViewStyle"

替换为

style="@style/BigTextStyle"

有关挑战练习 日期格式化

这就是一个Java的基本类方法。

public void bind(Crime crime)
        {
            mCrime=crime;
            mTitleTextVIew.setText(mCrime.getTitle());
            SimpleDateFormat dateFormat=new SimpleDateFormat("E, MMM dd, yyyy");
            mDateTextVIew.setText(dateFormat.format(crime.getDate()));
            mSolvedImageView.setVisibility(crime.isSolved()?View.VISIBLE:View.GONE);
        }

发表评论