Entspricht der Bildansicht scaleType 'centerCrop' bitmap-drawable Schwerkraft
Ich erstellt habe, eine Aktivität mit einem header-Bild. Das header-Bild ist ursprünglich int die Aktivität der layout-xml-Daten über eine Bildansicht, wo die scaleType eingestellt ist centerCrop. Das tut, was ich will, es zentriert das Bild, clipping es Links und rechts im portrait-Modus, zeigt alle im Querformat.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="30dp"
android:paddingBottom="6dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:background="#919EAC"
android:orientation="vertical" >
<ImageView
android:id="@+id/header_image"
android:layout_width="match_parent"
android:layout_height="120dp"
android:contentDescription="@string/header_description"
android:scaleType="centerCrop"
android:src="@drawable/header" />
.... <other views> ...
Möchte ich diese ersetzen mit einem hintergrund drawable so, dass ich das header-Bild Raum für die Anzeige von Daten, und es erspart mir die Wiederholung der gleichen layout in den verschiedenen Aktivitäten.
Aus diesem Grund habe ich einen drawable, dass ich kann beziehen sich auf in der android:background-Attribut:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#919EAC" />
</shape>
</item>
<item>
<bitmap
android:antialias="true"
android:gravity="top|center_horizontal"
android:src="@drawable/header" />
</item>
</layer-list>
Diese drawable definiert den farbigen hintergrund, sonst würde das layout definieren und es wird ein header-Bild, die sonst mit eingeplant werden als Bildansicht.
Aber jetzt ist mein Bild skaliert wird, während ich möchte, dass es beschnitten werden.
Überprüfung der Android-Dokumentation, die ich habe versucht, andere Schwerkraft-Modi wie
android:gravity="top|clip_horizontal"
Aber es scheint immer noch die Anzeige/Skala anders ist als das Bild anzuzeigen.
Was wäre die richtige definition der hintergrund drawable?
- Sie waren in der Lage zu finden eine Lösung für Ihr problem? Ich bin kämpfen, mit der gleichen Sache.
- im Zusammenhang stackoverflow.com/questions/5119366/...
- Wie wärs mit "fill_vertical|clip_horizontal"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löste ich dieses problem mit einem decorator, die behauptet, das Aspekt-Verhältnis des zugrunde liegenden drawable: https://gist.github.com/rudchenkos/e33dc0d6669a61dde9d6548f6c3e0e7e
Leider gibt es keine Möglichkeit, Sie aus XML-also ich weiß, dass ganz am Anfang von meinem splash Aktivität:
Das ist in etwa äquivalent zu drawable als
android:windowBackground
in der Aktivität ThemaCenter crop bitmap-Datei im code, dies zu tun:
Ich weiß nicht von irgendeiner anderen Weise zu centerCrop eine bitmap-xml-wise.
Hoffe, es hilft jemand.
Fand ich diese Lösung aus diesem Beitrag:
Android Ernte Zentrum der Bitmap
Ich weiß nicht, wie es zu tun mit dem hintergrund. Sie können versuchen, andere Lösungen aber:
1) Einfachste Lösung, um die Anzeige etwas auf Bild ist, setzen Sie beide in einigen layout, so dass Sie sich überlappen. Zum Beispiel, können Sie ein RelativeLayout mit den Abmessungen der Bildansicht, die Bildansicht ist match_parent in beiden Dimensionen und eine TextView in der Mitte.
2) können Sie die Bildansicht in ein anderes layout zu, sagen wir, header.xml und verwenden Sie es, indem gehören header.xml überall Sie es brauchen.
3) Wenn das layout angezeigt werden auf der Oberseite der Bildansicht ist überall gleich dann erstellen Sie eine benutzerdefinierte layout mit einer Bildansicht und sagen, eine TextView in der Mitte, und verwenden Sie das layout überall. Sie können die TextView-string auf das benutzerdefinierte layout dann. Lesen Sie mehr über benutzerdefinierte layouts, Sie sind einfach.
Mit
scaleType = "centerCrop"
Sie waren ein Ergebnis zu erzielen, die Sie gewünscht beschneiden der Ränder von Bild und Karte-center Teil, welcher passt auf, dass die Größe.Für Die Bildansicht :
ImageView
habenscaleType
Attribut, das funktioniert nur für das Bild, das gesetzt wird, um es als Quelle angezeigt. also wie wäre esTextView
dannText
ist es die Quelle.Selbst Sie haben vielleicht bemerkt, dass scaleType funktioniert nicht für die Bild, das als hintergrund, dass funktioniert nur mit Bild geliefert als Quelle entweder in XML zur Laufzeit.
Für Layout
Layout
zeigen können hintergrund-Bilder, aber es ist kein Attribut angegeben, die für ein layout, das können die hintergrund-Bilder und skalieren Sie es wie pro der Wert für das Attribut.Also sollten Sie aufhören zu Fragen der Einrichtung von
ImageView
ausLayout
, weil es Es nicht hat.2 verschiedene Lösungen für Ihr Problem
1) Halten Sie die entsprechenden Bilder für die hintergrund-header in verschiedenen drawable-Ordner und verwenden Sie es, auf diese Weise, die Sie nicht benötigen, um es zu skalieren Laufzeit, wie Sie bereits entwickelte Bild für die Größe anders.
2) Sie müssen nur das Design Ihrer XML, wie im folgenden Beispiel