Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
13
respostas

Melhorando o visual do botão com drawable fundo.xml - o projeto não executa

Após criar o fundo.xml no drawable e atualiza-lo no botão, o projeto não executa, apresentando o seguinte problema:

08-25 19:16:11.847 2695-2701/vlc.com.br.agenda W/art: Suspending all threads took: 112.372ms

08-25 19:16:11.864 2695-2695/vlc.com.br.agenda W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable

08-25 19:16:12.433 2695-2695/vlc.com.br.agenda D/AndroidRuntime: Shutting down VM

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid
        android:color="#ff0000"/>
</shape>

   <Button
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:text="+"
        android:textColor="#ffffff"
        android:textSize="40sp"
        android:elevation="6dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:background="@drawable/fundo"
        android:stateListAnimator="@null"
        />insira seu código aqui
13 respostas

Oi Vitor, tudo bem ?

Só tira uma dúvida para mim, estão em arquivos diferentes né ?

Dessa forma :

res/drawable/fundo.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid
        android:color="#ff0000"/>
</shape>

E agora temos o layout de nossa Activity em res/layout/lista.xml :


<RelativeLayout>

    <ListView />

     <Button
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:text="+"
        android:textColor="#ffffff"
        android:textSize="40sp"
        android:elevation="6dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:background="@drawable/fundo"
        android:stateListAnimator="@null"
        />

</RelativeLayout>

Nosso botão faz parte do layout e o fundo.xml é similiar a uma imagem, por esse motivo está em drawable.

Abraços :D

Os arquivos estão com as codificações e lugares corretos, e continua dando o problema abaixo quando da execução (run app).

08-26 14:49:26.708 3022-3022/vlc.com.br.agenda W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable

Vitor,

Eu dei uma olhada, vi que isto é um problema relacionado com a nova versão do Android Studio, se você puder fazer um teste para prosseguir.

Desabilita o instant run e verifica se vai passar, por gentileza.

Para você fazer isso você precisa ir em :

Settings → Build, Execution, Deployment → Instant Run → (desmarque) Enable Instant Run

E daí roda de novo, por gentileza.

Desabilitei o instant run e o problema continua, segue o stacktrace, para verificação.

08-31 11:02:29.051 2400-2400/vlc.com.br.agenda I/art: Not late-enabling -Xcheck:jni (already on)
08-31 11:02:29.225 2400-2400/vlc.com.br.agenda W/System: ClassLoader referenced unknown path: /data/app/vlc.com.br.agenda-1/lib/x86
08-31 11:02:38.653 2400-2400/vlc.com.br.agenda W/System: ClassLoader referenced unknown path: /data/app/vlc.com.br.agenda-1/lib/x86
08-31 11:02:40.096 2400-2406/vlc.com.br.agenda W/art: Suspending all threads took: 70.831ms
08-31 11:02:40.651 2400-2400/vlc.com.br.agenda W/art: Verification of android.support.v7.view.ActionMode android.support.v7.app.AppCompatDelegateImplV7.startSupportActionModeFromWindow(android.support.v7.view.ActionMode$Callback) took 111.354ms
08-31 11:02:40.959 2400-2410/vlc.com.br.agenda I/art: Background sticky concurrent mark sweep GC freed 14949(1975KB) AllocSpace objects, 8(176KB) LOS objects, 63% free, 1335KB/3MB, paused 469us total 105.381ms
08-31 11:02:41.059 2400-2406/vlc.com.br.agenda W/art: Suspending all threads took: 32.606ms
08-31 11:02:41.226 2400-2400/vlc.com.br.agenda W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
08-31 11:02:41.688 2400-2406/vlc.com.br.agenda W/art: Suspending all threads took: 160.647ms
08-31 11:02:41.694 2400-2400/vlc.com.br.agenda D/AndroidRuntime: Shutting down VM


                                                                 --------- beginning of crash
08-31 11:02:41.695 2400-2400/vlc.com.br.agenda E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: vlc.com.br.agenda, PID: 2400
                                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{vlc.com.br.agenda/vlc.com.br.agenda.ListaAlunosActivity}: android.view.InflateException: Binary XML file line #24: addView(View, LayoutParams) is not supported in AdapterView
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                  Caused by: android.view.InflateException: Binary XML file line #24: addView(View, LayoutParams) is not supported in AdapterView
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                     at vlc.com.br.agenda.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:19)
                                                                     at android.app.Activity.performCreate(Activity.java:6237)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                                                                  Caused by: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
                                                                     at android.widget.AdapterView.addView(AdapterView.java:495)
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:839)
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:971)
                                                                     at android.view.LayoutInflater.rInflate(LayoutInflater.java:831)
                                                                     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                     at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                     at vlc.com.br.agenda.ListaAlunosActivity.onCreate(ListaAlunosActivity.java:19) 
                                                                     at android.app.Activity.performCreate(Activity.java:6237) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:148) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Vitor,

Receio ter encontrado o erro, mas só para ter certeza.

Envia para gente analizar o layout xml do seu lista alunos activity por favor

Abraços

java\vlc.com.br.agenda\ListaAlunosActivity

package vlc.com.br.agenda;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListaAlunosActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_alunos);

        String[]  alunos = {"Vitor","Luiz","Calassi","Vitor 1","Luiz 1","Calassi 1","Vitor 2","Luiz 2","Calassi 2"};
        ListView listaAlunos = (ListView) findViewById(R.id.lista_alunos);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,alunos);
        listaAlunos.setAdapter(adapter);
    }
}

Preciso que poste o layout xml por gentileza, o mesmo que você referencia no setContentView

res/layout/activity_lista_alunos.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true"
    tools:context="vlc.com.br.agenda.ListaAlunosActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_lista_alunos" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

Oi Vitor, pelo que vi, parece que você usou o Android Studio para criar a activity e ele já gerou o xml..

Por padrão essa activity já resolveria, mas você está fazendo um include, o que vamos precisar é o arquivo:

content_lista_alunos.xml

Acredito que ai finaliza as coisas para podermos te ajudar

Realmente estou usando do Android Studio, segue o arquivo.

res\layout\content_lista_alunos.xml

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="vlc.com.br.agenda.ListaAlunosActivity"
    tools:showIn="@layout/activity_lista_alunos">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lista_alunos">

    <Button
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:text="+"
        android:textColor="#ffffff"
        android:textSize="40sp"
        android:elevation="6dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:background="@drawable/fundo"
        android:stateListAnimator="@null"
        />

    </ListView>

</RelativeLayout>
solução!

Ufa, agora conseguimos chegar aonde queríamos.

E matei minhas dúvidas.

O que está acontecendo é um erro bem comum.

Dá uma olhadinha nessa parte :



    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lista_alunos">

    <Button
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:text="+"
        android:textColor="#ffffff"
        android:textSize="40sp"
        android:elevation="6dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:background="@drawable/fundo"
        android:stateListAnimator="@null"
        />

    </ListView>

Você está fazendo com que o ListView tenha o mesmo comportamento que um Layout pai , como um LinearLayout, RelativeLayout...

E não é isso que queremos que aconteça, ambas views são indepentes.

Para você deixar com o comportamento esperado basta fazer isso :

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lista_alunos">

    </ListView>

    <Button
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:text="+"
        android:textColor="#ffffff"
        android:textSize="40sp"
        android:elevation="6dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:background="@drawable/fundo"
        android:stateListAnimator="@null"
        />

Grande Matheus, funcionou direitinho.

Muito obrigado mesmo pela força, vou continuar os cursos de Android com tudo.

Abraço.

Bacana Vitor !!

Bons estudos e qualquer dúvida nos vemos aqui no fórum !

Abraços :D