2016-10-07 1 views
1

Also habe ich versucht, den folgenden CodeErste Fehler bei einem einfachen Android App über die Layout-XML-Datei

<?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> 

Die Fehler Ich erhalte diese

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 

Im Gegensatz folgenden Arbeiten korrekt

<?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> 

Ich verstehe nicht, warum das erste nicht funktioniert. Ist es falsch, die verschiedenen Elemente basierend auf einem Element in der Mitte des Layouts anzuordnen?

Antwort

2

Es wurde keine Ressource gefunden, die mit dem angegebenen Namen übereinstimmt (unter 'layout_above' mit Wert '@ id/textView').

Es versucht Ihnen zu sagen, dass Sie eine ID verwenden, die noch nicht initialisiert wurde. Um dies zu vermeiden, sollten Sie in der Lage sein, das erste Layout zu verwenden, sofern Sie angeben "android: layout_above =" @ + id/Textview“(Die "+" muss da sein in @ + 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

weil in der ersten dieser Zeile 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" /> 

bezieht sich auf ein Element (Textview), die noch nicht aus dem XML-Parser gelesen hat gerade die Reihenfolge ändern: (Erste Textansicht dann Bildansicht in der xml)

PS: tools:context="com.slidenerd.sample.customdesign.MainActivity" ist unnötig, weil das nicht Ihr Projekt

ist
Verwandte Themen