Preciso incluir um gráfico de cabeçalho em todas as minhas atividades / visualizações. O arquivo com o cabeçalho é chamado header.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#0000FF"
android:padding="0dip">
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="0dip"
android:layout_marginTop="0dip"
android:layout_marginBottom="0dip"
android:padding="0dip"
android:paddingTop="0dip"
android:paddingBottom="0dip"
android:layout_gravity="fill"
android:background="#00FF00"
/>
</FrameLayout>
Observe o android:background="#00FF00"
(verde), é apenas para fins de visualização.
Eu os incluo em meus pontos de vista como este:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
style="@style/white_background">
<include layout="@layout/header" />
(...)
Então, quando eu realmente testo, o resultado se parece com a imagem da esquerda, em vez de como deveria ser (à direita):
(1) Esta parte - a laranja - é a imagem / ImageView em questão
(2) A borda verde não amada. nota: normalmente, a área verde seria transparente - só é verde porque eu defino o background
.
Observe a borda verde ao redor da imagem na parte superior; É parte do ImageView e simplesmente não consigo descobrir por que ele está lá ou como posso me livrar dele. Ele definiu todos os preenchimentos e margens para 0 (mas o resultado é o mesmo quando eu os omito). A imagem é um jpeg * de 480x64px * e eu a coloco em res / drawable (não em uma das opções drawable-Xdpi
).
(* jpeg, porque parece que me deparei com o antigo problema de png png - no começo, resolvi o problema, deixando a borda verde da mesma cor laranja da imagem e as cores não correspondiam.)
Eu tentei no meu htc desejo / 2.2 / Build 2.33.163.1 e no emulador. Também descrevi o problema para alguém no # android-dev; Ela podia reproduzir o problema, mas também não tinha explicação. O destino da compilação é 1.6.
update @tehgoose: esse código gera exatamente o mesmo resultado acolchoado superior e inferior.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
style="@style/white_background">
<!-- <include layout="@layout/header" /> -->
<ImageView
android:src="@drawable/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00FF00"
android:layout_weight="0"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dip"
android:layout_weight="1">
(... rest of the elements)
</LinearLayout>
</LinearLayout>
fonte
android:layout_margin="-10dp"
,android:padding="-10dp"
Respostas:
finalmente!
o atributo AdjustViewbounds fez o truque:
eu tropecei aqui . Obrigado pela ajuda!
fonte
Funciona para mim.
fonte
scaleType="fitXY"
faz algo diferente: altera a proporção da imagem, causando distorção. isso às vezes pode ser aceitável, por exemplo, para uma imagem de fundo abstrata.android:adjustViewBounds="true"
eandroid:scaleType="fitXY"
era o que eu precisava para alinhar os ImageViews no meu layout. As imagens foram desativadas em um pixel ou dois (muito pequeno em uma tela de alta resolução) com apenasadjustViewBounds
. Adicionar a imagemscaleType
parece forçar uma escala final da imagem depois que os limites da vista são ajustados, o que força a imagem a ser dimensionada para o tamanho máximo dos novos limites.Tem a ver com a proporção da imagem. Por padrão, o sistema mantém a proporção original da fonte da imagem. Que na maioria dos casos não corresponde exatamente ao layout ou às dimensões especificadas no layout. Portanto,
android:scaleType
para ajustar a imagem. Por exemplo, você pode especificarandroid:scaleType="fitXY"
fonte
esses preenchimentos extras são gerados automaticamente, já que o android tentaria obter a proporção original. por favor tente abaixo
fonte
Pode ser que você possa dar
specific height to imageView say 50dp or 40dp
eadjust image to make green border
desaparecer.Por exemplo:
android:layout_height="40dp"
fonte
Você precisa alterá-lo para "fill_parent"
Você também pode precisar redimensionar sua imagem para que ela tenha a proporção correta para preencher o layout do quadro em que está.
Não entendo por que você precisa do layout do quadro. Sem ele, sua imagem preencheria a tela de qualquer maneira.
EDIT: sim, desculpe, o xml é a altura da visualização de imagem.
fonte
ImageView
, não é tão evidente na sua resposta :)use este android: scaleType = "fitXY" no imageview xml
fonte
Você precisa fornecer uma forma em torno da visualização de imagem para dar uma aparência melhor.
Aqui o que eu usei:
fonte