كيف يمكنني ضبط نصف قطر الزاوية المستديرة من اللون القابل للرسوم باستخدام XML؟

StackOverflow https://stackoverflow.com/questions/2122199

  •  22-09-2019
  •  | 
  •  

سؤال

على موقع Android ، هناك ملف قسم حول رسم الألوان. يبدو أن تحديد هذه القوالب في XML مثل هذا:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

في Java API ، لديهم طريقة التالية لتحديد الزوايا المستديرة:

setCornerRadius(float radius)

هل هناك طريقة لتعيين الزوايا المستديرة في XML؟

هل كانت مفيدة؟

المحلول

استخدم ال <shape> علامة لإنشاء رسم قابل للرسمية في XML مع زوايا مستديرة. (يمكنك القيام بأشياء أخرى مع علامة الشكل مثل تحديد تدرج اللون أيضًا).

فيما يلي نسخة من ملف XML الذي أستخدمه في أحد تطبيقي لإنشاء خلفية بيضاء وحدود سوداء وزوايا مستديرة:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    

    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 

    <corners android:bottomRightRadius="7dp"
             android:bottomLeftRadius="7dp"
             android:topLeftRadius="7dp"
             android:topRightRadius="7dp" /> 
</shape>

نصائح أخرى

إجابة Mbaird تعمل بشكل جيد. فقط كن على علم بأنه يبدو أن هناك خطأ في Android (2.1 على الأقل) ، أنه إذا قمت بتعيين نصف قطر زاوية فردي إلى 0 ، فإنه يجبر جميع الزوايا على 0 (على الأقل هذا هو الحال مع وحدات "DP" ؛ جربها مع أي وحدات أخرى).

كنت بحاجة إلى شكل حيث تم تقريب الزوايا العليا وكانت الزوايا السفلية مربعة. حصلت على هذا من خلال ضبط الزوايا التي أردت أن أكون مربعة إلى قيمة أكبر قليلاً من 0: 0.1dp. لا يزال هذا يجعل زوايا مربعة ، لكنه لا يجبر الزوايا الأخرى على أن تكون نصف قطرها 0.

حاول أدناه الرمز

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top