it-roy-ru.com

Невозможно получить точную форму круга при использовании вида карты

Я использую вид карты для плавающей кнопки действия в дизайне материалов Android. Я использую следующий код для получения круга 

<Android.support.v7.widget.CardView
    Android:id="@+id/fab"
    Android:layout_width="38dp"
    Android:layout_height="38dp"
    Android:layout_marginBottom="10dp"
    Android:layout_marginRight="10dp"
    card_view:background="@color/blue"
    card_view:cardCornerRadius="19dp"
    card_view:cardPreventCornerOverlap = "false"
    card_view:cardElevation="6dp" >
</Android.support.v7.widget.CardView>

Я установил угловой радиус как половину ширины. но все равно я не могу получить форму круга.enter image description here

27
Ayyappan

Я решил проблему. Теперь Android предоставляет библиотеку дизайна для дизайна материалов, которая имеет FloatingActionButton. Нет необходимости настраивать вид карты для плавающей кнопки действий.

<Android.support.design.widget.FloatingActionButton
        Android:id="@+id/fab"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom|end"
        Android:layout_margin="@dimen/fab_margin"  />

Добавить библиотеку дизайна в зависимости gradle

compile 'com.Android.support:design:23.1.1'

Для более подробной информации обратитесь к ссылка

16
Ayyappan

Чтобы получить идеальную форму круга, используя вид карты, радиус угла должен составлять 1/2 ширины или высоты (принимая во внимание, что это квадрат). Кроме того, я заметил, что вы используете параметры card_view, не надо.

<Android.support.v7.widget.CardView
Android:layout_width="38dp"
Android:layout_height="38dp"
app:cardCornerRadius="19dp"
app:cardElevation="6dp"
Android:layout_marginBottom="10dp"
Android:layout_marginRight="10dp"
Android:id="@+id/fab"
Android:background="@color/blue"
>

10
Alexandr Kotikov

Чтобы получить круглую форму, используя Вид карты вы можете установить свойство shape , Android: shape = "ring" .
app: cardCornerRadius должно быть установлено равным половине ширины или высоты дочернего представления

<Android.support.v7.widget.CardView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:innerRadius="0dp"
        Android:shape="ring"
        app:cardCornerRadius="75dp">

        <ImageView
            Android:layout_width="150dp"
            Android:layout_height="150dp"
            Android:layout_gravity="center"
            Android:background="@drawable/image" />
     </Android.support.v7.widget.CardView>
7
silent_control

Я попробовал ваш код и обнаружил, что карты были менее круглыми в отношении увеличения значения высоты карты. Попробуйте установить его в ноль , и это по крайней мере заставляет его выглядеть лучше.

card_view:cardElevation="0dp";

Но, вероятно, лучшим вариантом было бы использовать FloatingActionButton для круглой кнопки

<Android.support.design.widget.FloatingActionButton
    Android:src="@drawable/your_drawble_name"
    app:fabSize="normal"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />
5
Collins Abitekaniza

Я придумал простое решение использования Drawable, и это выглядит потрясающе!

Получить Drawable здесь https://drive.google.com/open?id=0B4Vo_ku-aIKzUFFnUjYxYVRLaGc

 enter image description here

5
Dhruv Kaushal

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

форма = "кольцо"

использовать одинаковые layout_height и layout_weight

а также 

app: cardCornerRadius = половина layout_height или layout_weight

пример

<Android.support.v7.widget.CardView
                        Android:id="@+id/cardview"
                        Android:layout_width="110dp"
                        Android:layout_height="110dp"
                        Android:shape="ring"
                        app:cardCornerRadius="55dp">
</Android.support.v7.widget.CardView>
5
Gautam Kumar

Да, я достиг этого, уменьшив половину CardCornerRadius до высоты его вида. 

0
RAHUL