# 🎨 Layouts XML — Interfaces Visuais > **Pasta:** `app/src/main/res/layout/` --- ## Layouts de Activity (ecrãs completos) ### `activity_main.xml` (243 linhas) **Usado por:** `MainActivity.java` Estrutura principal com 3 secções controladas pela BottomNav: | Secção | ID | Descrição | |---|---|---| | Header | `lay_top` | Saudação "Olá, [Nome]" (`tv_greeting_main`) | | Agenda | `view_agenda` | CalendarView num MaterialCard + RecyclerView de consultas + texto "agenda vazia" | | Pacientes | `view_pacientes` | RecyclerView de pacientes (`recycler_consultas`) + texto "vazio" | | Perfil | `view_perfil` | Ícone de utilizador + MaterialCard com dados + botões "Editar" e "Logout" | | Nav | `bottom_navigation` | BottomNavigationView com menu `menu_bottom` | **Layout raiz:** `RelativeLayout` com fundo `#F5F5F5` --- ### `activity_agenda.xml` (53 linhas) **Usado por:** `AgendaActivity.java` Layout vertical simples: 1. `CalendarView` — calendário nativo 2. `TextView` — título "Consultas agendadas:" 3. `RecyclerView` (`recycler_agenda`) — lista de consultas 4. `TextView` (`text_agenda_vazia`) — mensagem quando vazio (visibility: gone) 5. `BottomNavigationView` — navegação inferior --- ### `activity_chat.xml` (57 linhas) **Usado por:** `ChatActivity.java` **Layout:** `ConstraintLayout` | Elemento | ID | Descrição | |---|---|---| | RecyclerView | `recycler_mensagens` | Ocupa o espaço todo acima do input | | Barra de input | `layout_input` | LinearLayout horizontal no fundo | | Campo de texto | `et_mensagem_input` | EditText com hint "Escrever mensagem..." | | Botão enviar | `btn_enviar` | ImageButton com ícone `ic_send` | --- ### `activity_login.xml` (127 linhas) **Usado por:** `LoginActivity.java` Layout num `ScrollView` centrado: 1. **Logo** — ImageView 250×250dp (`logo_app`) 2. **Card de login** — MaterialCardView contendo: - Título "Iniciar Sessão" - Campo email (`email_edit_text`) - Campo password (`password_edit_text`) - Checkbox "Lembrar-me" - Botão "Entrar" (`login_button`) - Link "Esqueceu a palavra-passe" (`forgot_password_link`) 3. **Link de registo** — "Não tem conta? Registar" (`register_link`) --- ### `activity_register_medico.xml` (153 linhas) **Usado por:** `RegisterActivity.java` Layout num `ScrollView`: 1. **Logo** — ImageView 200×200dp (`ic_logo`) 2. **Card de registo** — MaterialCardView contendo: - Título "Registar" - Campo nome (`name_edit_text`) - Campo especialidade (`specialty_edit_text`) - Dropdown género (`gender_auto_complete`) - Campo email (`email_edit_text`) - Campo password (`password_edit_text`) - Botão "Registar" (`register_button`) - Link "Já tem conta? Entrar" (`login_link`) --- ### `activity_detalhe_paciente.xml` (158 linhas) **Usado por:** `DetalhePacienteActivity.java` **Layout:** `ConstraintLayout` | Secção | Conteúdo | |---|---| | Topo | Botão voltar (`btn_sair_detalhe`) com ícone seta | | Card "Informação Pessoal" | Nome, idade, nº utente, sexo, email | | Card "Medicação Atual" | Lista de medicação (`tv_medicacao_paciente`) | | Fundo | Botão "Conversar com Paciente" (`btn_chat_paciente`) com ícone chat | --- ### `activity_editar_perfil.xml` (103 linhas) **Usado por:** `EditarPerfilActivity.java` Layout num `ScrollView`: 1. Botão voltar (`btn_voltar`) 2. Título "Editar Dados Pessoais" 3. Campo nome (`edit_name`) 4. Campo especialidade (`edit_specialty`) 5. Dropdown sexo (`edit_gender`) — `ExposedDropdownMenu` 6. Campo email (`edit_email`) — **desativado** (não editável) 7. Botão "GUARDAR ALTERAÇÕES" (`btn_guardar_alteracoes`) --- ### `activity_perfil_medico.xml` (125 linhas) **Usado por:** `PerfilMedicoActivity.java` Layout vertical com: 1. Ícone de utilizador (100×100dp) 2. MaterialCard com dados do médico (nome, email, especialidade, cédula) 3. Botão "EDITAR DADOS" (preto) 4. Botão "TERMINAR SESSÃO" (contorno vermelho) 5. BottomNavigationView --- ## Layouts de Item (para RecyclerView) ### `item_consulta_medico.xml` (101 linhas) **Usado por:** `ConsultaAdapter.java` MaterialCard com cantos arredondados (16dp): - **Linha superior:** Ícone do utente (circle_bg) + nome + data/hora + status - **Linha inferior:** Botão "Eliminar" (vermelho, outlined) + Botão "Aceitar" (preenchido) --- ### `item_mensagem.xml` (51 linhas) **Usado por:** `MensagemAdapter.java` Cada item tem **dois layouts** (apenas um visível de cada vez): | Layout | ID | Posição | Estilo | |---|---|---|---| | Recebida | `layout_msg_recebida` | Esquerda | `bg_bubble_receive` (texto preto) | | Enviada | `layout_msg_enviada` | Direita | `bg_bubble_send` (texto branco) | Largura máxima: 280dp (para não ocupar o ecrã todo) --- ### `item_paciente.xml` (59 linhas) **Usado por:** `PacienteAdapter.java` MaterialCard simples com: - Ícone do paciente (circle_bg, 56×56dp) - Nome em negrito (18sp) - Email em cinza (14sp)