Próbuję zaimplementować ImageView z możliwością przechowywania zarówno zdjęć poziomych jak i pionowych. Te obrazy powinny pasować do szerokości widoku obrazu (jeśli jest krajobraz) lub wysokości (jeśli jest portretem), ale w każdym przypadku muszą być wyrównane do górnej krawędzi widoku bez marginesów i wypełnień.Android ImageView ScaleType * FIT_TOP *
Co chciałbym osiągnąć coś takiego jak android:scaleType="fitStart"
ale skupione w przypadku zdjęć portretowych lub wyrównany do góry w przypadku zdjęć krajobrazowych.
Dodano:
Teraz używam takiego brzydkiego kodu, który wydaje się działać, ale nie jestem pewien, że jest to najlepsze rozwiązanie:
<com.custom.layout.MyImageView
android:id="@+id/detail_view_image"
android:src="@drawable/logo"
android:background="#fff"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:cropToPadding="false"
android:adjustViewBounds="false"
/>
a następnie w mojej klasie, która rozciąga się ImageView ja zrobić:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int imgWidth = getDrawable().getIntrinsicWidth();
int imgHeight = getDrawable().getIntrinsicHeight();
if(imgWidth>imgHeight)
setScaleType(ScaleType.FIT_START);
else
setScaleType(ScaleType.FIT_CENTER);
int width = measureWidth(widthMeasureSpec);
int height = measureHeight(heightMeasureSpec);
setMeasuredDimension(width, height);
}
Szukam czegoś podobnego, czy kiedykolwiek znalazłeś rozwiązanie tego problemu? –
Niestety nie udało mi się, użyłem kodu, który napisałem powyżej ... – 0m4r
ok, dzięki za kod! –