Android выделите границы просмотра карт - PullRequest
0 голосов
/ 03 октября 2018

Я использую карты в повторном обзоре и хотел бы выделить некоторые из них.

Первая мысль, которая у меня возникла, - это другая тень или граница с ярким цветом, но пока я не смогнайди все свойства, которые бы его отрегулировали

это мой вид карты:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cardView"
    android:layout_width="match_parent"
    android:layout_height="@dimen/giveawayCardHeight"
    android:layout_gravity="center"

    card_view:cardCornerRadius="4dp"
    card_view:cardElevation="3dp"
    card_view:cardUseCompatPadding="true"
    >

    <android.support.v7.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:elevation="5dp">

        <RelativeLayout
            android:layout_width="150dp"
            android:layout_height="match_parent"
            android:background="#FFFFFF">

            <android.support.v7.widget.AppCompatImageView
                android:id="@+id/raffleThumbnail"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                 />

            <com.tomatedigital.giveawaymaster.ui.FontFitTextView
                android:id="@+id/raffleOwner"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                android:layout_alignParentBottom="true"
                android:alpha="0.7"
                android:background="@color/colorPrimaryDark"
                android:gravity="center_horizontal|bottom"
                android:text="viajandocomgabi"
                android:textColor="@color/cardview_light_background"
                android:textSize="@dimen/normalFont" />
        </RelativeLayout>

        <android.support.v7.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="@dimen/smallMargin"
            android:orientation="vertical"
            android:background="#FFFFFF">

            <android.support.v7.widget.AppCompatTextView
                android:id="@+id/raffleDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"

                android:text="@string/raf_date_label"
                android:textSize="@dimen/normalFont" />


            <android.support.v7.widget.LinearLayoutCompat
                android:id="@+id/giveawayButtonsLayout"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="horizontal">
                <Space
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1" />

                <android.support.v7.widget.AppCompatImageButton
                    android:id="@+id/startButton"
                    android:layout_width="@dimen/cardButtonSize"
                    android:layout_height="@dimen/cardButtonSize"


                    android:background="?android:attr/selectableItemBackground"
                    android:scaleType="fitXY"
                    android:src="@drawable/ic_play" />

                <Space
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="2" />

                <android.support.v7.widget.AppCompatImageButton
                    android:id="@+id/deleteButton"
                    android:layout_width="@dimen/cardButtonSize"
                    android:layout_height="@dimen/cardButtonSize"

                    android:background="?android:attr/selectableItemBackground"
                    android:scaleType="fitXY"
                    android:src="@drawable/ic_trash" />

                <Space
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1" />
            </android.support.v7.widget.LinearLayoutCompat>

            <android.support.v7.widget.AppCompatTextView
                android:id="@+id/ticketAmountLabel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"

                android:drawableRight="@drawable/ic_tickets"
                android:text="@string/you_have"
                android:textSize="@dimen/normalFont" />
        </android.support.v7.widget.LinearLayoutCompat>
    </android.support.v7.widget.LinearLayoutCompat>
</android.support.v7.widget.CardView>

и вот как я хотел бы быть:

enter image description here

лучший сценарий - переключить цвет тени по умолчанию на что-то более яркое, но если это невозможно, то с внутренней границей все будет в порядке

как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Попробуйте эту библиотеку, она классная

Установка

dependencies {
    implementation 'com.loopeer.lib:shadow:0.0.4-beta3' 
}

Использование

<com.loopeer.shadow.ShadowView
    android:id="@+id/shadow_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="12dp"
    android:elevation="10dp"
    android:foreground="?attr/selectableItemBackground"
    android:onClick="onShadowClickTest"
    android:padding="10dp"
    app:cornerRadius="4dp"
    app:shadowMargin="20dp"
    app:shadowRadius="14dp">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="YOUR_TEXT"/>
</com.loopeer.shadow.ShadowView>

Атрибут

android:foreground  
shadowMargin  
shadowMarginTop  
shadowMarginLeft  
shadowMarginRight  
shadowMarginBottom  
cornerRadius  
cornerRadiusTL  
cornerRadiusTR  
cornerRadiusBL  
cornerRadiusBR  
foregroundColor  
shadowColor  
shadowDx  
shadowDy  
shadowRadius  
backgroundColor

Надеюсь, это поможет вам

0 голосов
/ 03 октября 2018

для внутренней границы вы можете создать xml drawable файл, подобный этому

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="4dp" />
    <stroke android:color="@color/colorAccent" android:width="8dp" />
</shape>

, а затем поместить его как background первого потомка CardView s.

установите cardCorner radius и xml background corner radius одинаковыми друг с другом.

0 голосов
/ 03 октября 2018

Это немного уродливо, но вы можете добавить другое поле в вашей модели, которое вы будете использовать в качестве основы для установки другого фона в просмотре карты.Затем на адаптере программно измените фон карты, в зависимости от ее состояния.Вы должны уведомлять DataSetChanged часто, хотя при необходимости.

...