Solucionado (ver solução)
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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software