Ajuda com layout

67 views
Skip to first unread message

Rafael Culik

unread,
Sep 26, 2014, 9:12:56 PM9/26/14
to androidb...@googlegroups.com
Boa noite Senhores

Tou com um problema com layout

tou tentando fazer um layout parecido com isso https://www.dropbox.com/s/66xfdoaie4wkyzd/layout.png?dl=0

o que cheguei mais perto foi esse xml de layout

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    tools:context="com.br.pedidos.ui.Pedido"
    android:id="@+id/">

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView"
            android:layout_column="0" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView"
            android:layout_column="17" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText"
            android:layout_column="40" />
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView2"
            android:layout_column="17" />
           
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText2"
            android:layout_column="40" />
           
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView3"
            android:layout_column="17" />
           
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText3"
            android:layout_column="40" />
    </TableRow>
        <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView4"
            android:layout_column="17" />
           
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText4"
            android:layout_column="40" />
    </TableRow>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView5"
            android:layout_column="17" />
           
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText5"
            android:layout_column="40" />
    </TableRow>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView6"
            android:layout_column="17" />
           
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editText6"
            android:layout_column="40" />
    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2" />
           
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button3" />

    </TableRow>

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button4" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button5" />

    </TableRow>
   
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView"
            android:layout_column="17" />
    </TableRow>


</TableLayout>

Alguém pode me ajudar?
As imagens que serão mostradas no imageview tem tamanho fixo de  240x180 (jpeg)

Atenciosamente
Luiz Rafael Culik Guimaraes

Leonardo Malkes

unread,
Sep 27, 2014, 8:39:19 AM9/27/14
to androidb...@googlegroups.com
Oi Luiz,

Fiz um exemplo do seu layout que é bem simples. Veja: http://pastebin.com/EwgPscQj

Algumas considerações:
Eu nunca precisei de fato usar TableLayout. Algumas pessoas talvez usassem RelativeLayout, mas além dele ser mais custoso a manutenção tb é mais difícil.
O fill_parent já esta descontinuado há muito tempo. Use sempre o match_parent
Este layout está todo em um único arquivo. É uma boa prática quebrar o layout e fazer uso dos includes. A manutenção e leitura do código fica muito mais simples.

Veja o código no pastebin e qualquer dúvida fale aqui.

[]'s
LM

Geovani **Leia a documentação oficial** de Souza

unread,
Sep 27, 2014, 11:31:09 AM9/27/14
to androidb...@googlegroups.com

Rafael Culik

unread,
Sep 27, 2014, 7:50:55 PM9/27/14
to androidb...@googlegroups.com
Geovani

Obrigado pela dica

Atenciosamente
Luiz

Rafael Culik

unread,
Sep 27, 2014, 8:22:50 PM9/27/14
to androidb...@googlegroups.com
Senhores

Com a dica do Geovani. eu alterei meu layout para usar os fragments.

Mas agora surgui uma duvida.
meu fragment2 e o principal, ele alimenta a imagem do fragmento ( uma imageview) a direita  e tem um terceiro listview em baixo que  precisa ser alimentado ao clicar um determinado botao

o layout do meu fragment 2 esta abaixo.


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:id="@+id/">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/DESCRICAO"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/textView"
        android:layout_toEndOf="@+id/textView"
        android:layout_marginLeft="91dp"
        android:width="200dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/APLICACAO"
        android:id="@+id/textView5"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textView6"
        android:layout_below="@+id/textView2"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignStart="@+id/textView2"
        android:width="200dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/MARCA"
        android:id="@+id/textView7"
        android:layout_below="@+id/textView5"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textView8"
        android:layout_below="@+id/textView6"
        android:layout_alignLeft="@+id/textView6"
        android:layout_alignStart="@+id/textView6"
        android:width="200dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/PESO"
        android:id="@+id/textView9"
        android:layout_below="@+id/textView7"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textView10"
        android:layout_alignTop="@+id/textView9"
        android:layout_alignLeft="@+id/textView8"
        android:layout_alignStart="@+id/textView8"
        android:width="200dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/PRECO"
        android:id="@+id/textView11"
        android:layout_below="@+id/textView9"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textView12"
        android:layout_below="@+id/textView10"
        android:layout_alignLeft="@+id/textView10"
        android:layout_alignStart="@+id/textView10"
        android:width="200dp" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ITEMANTERIOR"
        android:id="@+id/button"
        android:layout_below="@+id/textView11"
        android:layout_toLeftOf="@+id/textView12"
        android:layout_toStartOf="@+id/textView12"
        android:layout_marginRight="48dp"
        android:layout_marginTop="34dp" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/PROXIMOITEM"
        android:id="@+id/button4"
        android:layout_alignTop="@+id/button"
        android:layout_alignLeft="@+id/textView12"
        android:layout_alignStart="@+id/textView12" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ADICIONARCARRINHO"
        android:id="@+id/button5"
        android:layout_alignTop="@+id/button4"
        android:layout_toRightOf="@+id/button4"
        android:layout_toEndOf="@+id/button4"
        android:layout_marginLeft="61dp" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/FECHARPEDIDO"
        android:id="@+id/button6"
        android:layout_below="@+id/button"
        android:layout_toRightOf="@+id/textView11"
        android:layout_toEndOf="@+id/textView11"
        android:layout_marginLeft="28dp"
        android:layout_marginTop="27dp" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/CANCELARPEDIDO"
        android:id="@+id/button7"
        android:layout_toEndOf="@+id/button6"
        android:layout_alignTop="@+id/button6"
        android:layout_toRightOf="@+id/button6"
        android:layout_marginLeft="31dp" />
</RelativeLayout>

minha duvidas são as seguintes:

1 - o Acesso a base de dados fica na parte da activity que chama esse fragment?
2 - Se clicado o o Botao item anterior e item posterior como posso atualizar a imagem do imageview. sendo que a variavel lista e um Arraylist que pode estar na activity , ou o acesso aos dados deve estar em cada fragment

private void PrevItem(View v )
{
     iPos --;
   if ( iPos >0 )
   {
      private tipo  t;
 
      t= lista.get( iPos ) ;
      AtualizaDados( t ); // mostra dados do fragment2
      AtualizaImagem(t) ;; // mostra a imagem do fragment1 
   }
}
private void NextItem(View v )
{
   iPos ++
   if ( iPos > lista.size() )
   {
      private tipo  t;
      t= lista.get( iPos ) ;
      AtualizaDados( t ); // mostra dados do fragment2
      AtualizaImagem(t) ;; // mostra a imagem do fragment1 

Geovani **Leia a documentação oficial** de Souza

unread,
Sep 28, 2014, 12:23:16 PM9/28/14
to androidb...@googlegroups.com
Rafael, uma dica: Imagino que vc esteja se baseando em uma aplicação feita em Delphi, certo? Nesse caso: Android não é Delphi.

A forma de trabalhar é diferente. Vamos lá:

No caso dos dados, a melhor forma é isolá-los atrás de um ContentProvider, não só os dados relacionais (db), mas arquivos, chaves-valor, API Rest, inclusive. Ele seria o equivalente a um DataModule. O Cursor é equivalente ao DataSet, e os Adapters são equivalmentes ao DataSource.

Pra facilitar a criação dele, recomendo o Schematic, que é uma mão na roda.

Seguindo essa lógica, sua ListView (que é equivalmente a uma Grid) recebe um Adapter (DataSource) que abstrai o conteúdo do Cursor (DataSet) e cria suas Views.

Sobre o acesso, se vc optar por usar o ContentProvider, o acesso é feito dentro dos Fragments. Desde que eles foram criados no Android 3.0, as Activities passaram a ter apenas a responsabilidade de ser um "palco". Além disso, vale a pena colocar nelas apenas controles mais "globais", como NavigationDrawer, ViewPager (com tabs) e o conteúdo pra comunicar um Fragment com outro.

Quanto aos seus botões de avançar e voltar: Não há a menor necessidade disso. Caso vc realmente queira dar uma facilidade para o usuário de trocar de itens, sem sair da Activity de detalhe, utilize um Swipe pra "deslizar" de um item para outro.

A forma de navegar no conteúdo do Android é outra: Vc lista o conteúdo, o usuário pode utilizar uma Action (na ActionBar) pra adicionar novos itens, e tocar em um pra editar. Mas vale lembrar que na listagem, só a informação mais essencial é necessária. Vc pode fazer um resumo nela (suponho que seu app seja de pedidos/itens de pedido, logo o "subtotal" ficaria na listagem).

Partindo desses conceitos, vc pode ter o seguinte:

# Para Smartphones:
- Duas Activities: Uma lista e uma detalhe;
- Dois Fragments: Uma lista e um "Form" pra editar o conteúdo;

# Para Tablets:
- Uma Activity com os dois fragments, lado a lado.

Na Lista, vc carrega o conteúdo do Content Provider;
Quando o usuário toca na action "adicionar", ele é levado para a activity de detalhe, com um formulário em branco. Se ele tocar em um item da lista, ele é levado para o mesmo formulário, mas ele vem preenchido com os dados do item. No caso do tablet, não existe essa navegação para outra activity, a Activity principal deve atualizar o fragment de detalhe (Na documentação têm isso bem explicado, e o Android Studio/ADT já têm um template Master/Detail prontinho ;)).

Pra saber se o Fragment/Form de edição deve criar ou atualizar o conteúdo, vc passa um argumento (via Activity Extra e Fragment Arg);

Pra salvar uma única Action (no caso de smartphones) ou um botão (no caso de tablets) já resolve. Pra cancelar, basta um toque no "Voltar".

Claro que essas ideias são a forma que eu faria. Vc pode acessar o banco diretamente, ficar criando interfaces mais elaboradas e navegar entre os itens da forma que quiser :D

Espero que isso te ajude.

Rafael Culik

unread,
Sep 28, 2014, 1:06:29 PM9/28/14
to androidb...@googlegroups.com

Boa tarde Geovani

Eu tenho as  classes que retornam as listas de dados de uma classe assim como as classes de Mac de  cada  tabela.

Sei que Android não é delphi, mas me solicitaram a tela o mais próximo do existente.

Atenciosamente
Luiz

--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/mkbVlhAysoM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Rafael Culik

unread,
Sep 30, 2014, 7:40:11 PM9/30/14
to androidb...@googlegroups.com
Geovani

Obrigado pelas dicas.

vou dar uma olhada nos topicos que vc sugeriu

Atenciosamente
Luiz
Reply all
Reply to author
Forward
0 new messages