#android #imageview #cardview
#Android #просмотр изображения #Просмотр карты
Вопрос:
Ниже приведен мой код:
<androidx.cardview.widget.CardView
android:id="@ id/cv_back"
android:layout_width="@dimen/walletFuncFrameSize"
android:layout_height="@dimen/walletFuncFrameSize"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="24dp"
android:layout_marginStart="24dp"
app:cardCornerRadius="250dp">
<androidx.cardview.widget.CardView
android:layout_width="@dimen/walletFuncSize"
android:layout_height="@dimen/walletFuncSize"
app:cardCornerRadius="250dp"
android:layout_gravity="center">
<ImageView
android:layout_width="@dimen/walletFuncImageSize"
android:layout_height="@dimen/walletFuncImageSize"
android:background="@drawable/back"
android:scaleType="centerCrop"
android:layout_gravity="center" />
</androidx.cardview.widget.CardView>
</androidx.cardview.widget.CardView>
Когда я тестирую на своем телефоне Android 10, он работает без проблем. Но когда я тестирую на своем телефоне Android 8.0, изображение не отображается.
Я попытался удалить все cardview, но сохранить только ImageView, и изображение, наконец, отобразилось.
Кто-нибудь знает, как исправить эту проблему?
Я также пытался:
- src и srcCompat и фон ImageView
- Измените оба androidx.cardview.widget.Просмотр карты на com.google.android.material.card.MaterialCardView
- Удалите один CardView
Комментарии:
1.
app:cardCornerRadius="250dp"
укажите соответствующий радиус, например: 20dp, 30dp2. @chandmohd я хочу сделать вид карты в виде круга,
3. @chandmohd оказывается, это действительно проблема, о которой вы упомянули! Большое спасибо: D
Ответ №1:
Попробуйте удалить радиус из внутреннего вида карты и / или оба. если вы видите изображение, вам нужно уменьшить радиус или увеличить размер карты.
ImageView не отображается, потому что у вас слишком большой радиус в обоих видах вашей карты, а виды карты, вероятно, недостаточно велики, поэтому radius перекрывает ваше изображение.
Ответ №2:
Поместите макет в представление вашей карты и сделайте представление изображения дочерним элементом:
<androidx.cardview.widget.CardView
android:id="@ id/cv_back"
android:layout_width="@dimen/walletFuncFrameSize"
android:layout_height="@dimen/walletFuncFrameSize"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="24dp"
android:layout_marginStart="24dp"
app:cardCornerRadius="250dp">
<LinearLayout
android:layout_width="@dimen/walletFuncSize"
android:layout_height="@dimen/walletFuncSize"
android:background="@drawable/oval"
android:orientation=vertical
android:layout_gravity="center">
<ImageView
android:layout_width="@dimen/walletFuncImageSize"
android:layout_height="@dimen/walletFuncImageSize"
android:background="@drawable/back"
android:scaleType="centerCrop"
android:layout_gravity="center" />
</LinearLayout>
</androidx.cardview.widget.CardView>
@drawable /oval:
<shape android:shape="oval" xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary" />
</shape>
Ответ №3:
Если вы хотите отобразить изображение в форме круга
Библиотека Material Design предоставляет ShapeableImageView
возможность создавать любую форму, которую вы хотите, без какой-либо пользовательской формы
пример:
<com.google.android.material.imageview.ShapeableImageView
android:id="@ id/ivSchoolIcon"
android:layout_width="56dp"
android:layout_height="56dp"
android:adjustViewBounds="true"
android:padding="2dp"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/circleImageView"
app:srcCompat="@drawable/ic_kid_placeholder" />
Определите свой стиль в своемstyle.xml:
<style name="circleImageView" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
<item name="android:shadowRadius">100</item>
<item name="android:shadowColor">@color/gray</item>
<item name="backgroundOverlayColorAlpha">12</item>
</style>
Зависимости:
implementation 'com.google.android.material:material:1.3.0-alpha01'