所以我尝试了以下代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.slidenerd.sample.customdesign.MainActivity"
android:background="#252525">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/clock"
android:layout_above="@id/textView"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:text="0:00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:textColor="#616161"
android:textSize="100sp"
android:layout_centerInParent="true" />
<ToggleButton
android:text="ToggleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="54dp"
android:id="@+id/toggleButton"
android:background="@drawable/toggle_selector"
android:textOff=""
android:textOn=""/>
</RelativeLayout>
我得到的错误是这些
Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:assembleDebug]
E:\AndroidProjects\Tutorials\CustomDesign\app\src\main\res\layout\activity_main.xml
Error:(17, 31) No resource found that matches the given name (at 'layout_above' with value '@id/textView').
E:\AndroidProjects\Tutorials\CustomDesign\app\build\intermediates\res\merged\debug\layout\activity_main.xml
Error:(17, 31) No resource found that matches the given name (at 'layout_above' with value '@id/textView').
Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt
Information:BUILD FAILED
Information:Total time: 21.791 secs
Information:3 errors
Information:0 warnings
Information:See complete output in console
相反,以下工作正常
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.slidenerd.sample.customdesign.MainActivity"
android:background="#252525">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/clock"
android:layout_marginTop="54dp"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:text="0:00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/imageView"
android:id="@+id/textView"
android:textColor="#616161"
android:textSize="100sp"
android:layout_centerInParent="true" />
<ToggleButton
android:text="ToggleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="54dp"
android:id="@+id/toggleButton"
android:background="@drawable/toggle_selector"
android:textOff=""
android:textOn=""/>
</RelativeLayout>
我不明白为什么第一个不起作用。根据放置在布局中心的项目排列各种项目是不对的。
答案 0 :(得分:2)
找不到与给定名称匹配的资源(位于&#39; layout_above&#39; with 价值&#39; @ id / textView&#39;)。
它试图告诉您,您正在使用尚未初始化的ID。为了避免这种情况,只要你指定&#34; android:layout_above =&#34; @ + id / textView&#34;就可以使用第一个布局。 (&#34; +&#34;需要在@ + id中存在)
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/clock"
android:layout_above="@id/textView" <-- this guy
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
答案 1 :(得分:1)
因为在第一行 android:layout_above =“@ id / textView”
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/clock"
android:layout_above="@id/textView"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
指的是尚未从xml解析器读取的元素(textview)。只需更改顺序:(首先是textview然后是xml中的imageview)
P.S。:tools:context="com.slidenerd.sample.customdesign.MainActivity"
是不必要的,因为那不是你的项目