প্যাডিং কোনও এক্সএমএল লেআউটে <আকার> প্রভাবিত করে না


92

আমি <shape>একটি এক্সএমএল ফাইল / বিন্যাসের মধ্যে ঘোষিত মধ্যে প্যাডিং সেট করার চেষ্টা করছি । তবে আমি যাই সেট করি না কেন প্যাডিং সম্পর্কিত কোনও পরিবর্তন হয় না। আমি যদি অন্য কোনও বৈশিষ্ট্য সংশোধন করি তবে আমি ইউআই-তে প্রভাবগুলি দেখতে পাচ্ছি। তবে এটি প্যাডিংয়ের সাথে কাজ করে না। আপনি সম্ভবত যে কারণে এটি ঘটতে পারে তার পরামর্শ দিতে পারেন?

আমি স্টাইল করার চেষ্টা করছি এমন এক্সএমএল শেপটি এখানে:

 <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle">

    <stroke android:width="1dp" 
            android:color="#ffffff" 
            android:dashWidth="2dp"/>

    <solid android:color="@color/button_white_cover"/>

    <corners android:radius="11dp"/>

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

উত্তর:


113

আমি শেষ পর্যন্ত প্যাডিংয়ের সাথে আমার সমস্যার সমাধান করেছি।

সুতরাং এখানে প্যাডিং আকৃতির উপর কোনও প্রভাব ফেলবে না। এর পরিবর্তে, আপনাকে অন্য অঙ্কনযোগ্যগুলিতে প্যাডিং প্রয়োগ করতে হবে যা এটি ব্যবহার করবে। সুতরাং, আমার একটি অঙ্কনযোগ্য রয়েছে যা আকৃতিটি ব্যবহার করে এবং সেখানে আমি নিম্নলিখিতটি করি:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/shape_below"/>
   <item android:top="10px" android:right="10px" android:drawable="@drawable/shape_cover"/>
</layer-list>

সুতরাং, আপনি দেখতে পারেন দ্বিতীয়- <item>এলিমেন্টে আমি প্যাডিং সেট করেছি (উপরে এবং ডানদিকে)। এবং এর পরে সবকিছু কাজ করে।

ধন্যবাদ


হাই, আমি সমস্যার সমাধানটি কীভাবে প্রয়োগ করব তা আমি বুঝতে পারি না। আমার কাছে একটি বোতাম রয়েছে যা অ্যাডনরয়েড আকার এবং সেটিংস ব্যবহার করে: শীর্ষ এবং অ্যান্ড্রয়েড: ডানটির কোনও প্রভাব নেই। আমি কীভাবে এটি সমাধান করব? ধন্যবাদ
আইসক্রিম

4
আমি মনে করি লুবমায়ার যা বলছে তা এরকম কিছু করা যা আমার পক্ষে কাজ করে তবে তারপরে কোণাগুলি সবসময় একটি অস্বচ্ছ সাদা ব্যাকগ্রাউন্ড থাকে যা ডিসপ্লে সমস্যাগুলি তৈরি করে (মন্তব্যে বিন্যাসের জন্য দুঃখিত!): <স্তর-তালিকা xMLns: android = " স্কিমাস.অ্যান্ড্রয়েড.com/apk/res/android "> <item> <আকৃতি অ্যান্ড্রয়েড: আকৃতি =" আয়তক্ষেত্র "> <আকার অ্যান্ড্রয়েড: প্রস্থ =" 0 ডিপি "অ্যান্ড্রয়েড: উচ্চতা =" 45 ডিপি "অ্যান্ড্রয়েড: রঙ =" @ অ্যান্ড্রয়েড: রঙ / স্বচ্ছ "/> </ translation> </item> <আইটেম অ্যান্ড্রয়েড: শীর্ষ =" 0 ডিপি "অ্যান্ড্রয়েড: ডান =" 0 ডিপি "অ্যান্ড্রয়েড: নীচে =" 0 ডিপি "অ্যান্ড্রয়েড: বাম =" 0 ডিপি "অ্যান্ড্রয়েড: অঙ্কনযোগ্য =" @ অঙ্কনযোগ্য / বাটন_ ব্লু_শ্যাপ "/> </layer-list>
ডাস্টিনবি

অফ-টপিকটিও তবে কার্যকর হতে পারে: যদি আপনার আঁকার ব্যবহারযোগ্য মাত্র একটি রঙ হয় তবে আপনি অ্যান্ড্রয়েডের মতো লিখতে পারেন: অঙ্কনযোগ্য = "@ রঙ / বিভাজক "ও। তবে পুরানো ডিভাইসে এটি বিরতি দেয়। আমি এটি ২.২-এ পরীক্ষা করেছি এবং এটি ভেঙে গেছে। এটি কোন স্তরে গ্রহণযোগ্য হয়েছিল তা নিশ্চিত নয়।
পাইজুসন

আসলে, <item>শিশুদের আঁকাগুলি গ্রহণ করে (যদিও এটি স্পষ্টভাবে নথিভুক্ত করা হয়নি)। আপনি সিঙ্গল এক্সএমএল এর মধ্যে এই আচরণটি অর্জন করতে পারেন।
অ্যালেক্স কোহন

4
এই উত্তরটি সাত বছর পরেও সঠিক বলে মনে হচ্ছে। পৃথিবীতে কি <shape><padding> জন্য ?
ডেভিড লর্ড

75

যেহেতু বেশ কয়েকটি মন্তব্যে ইঙ্গিত করা হয়েছে, সর্বোত্তম পন্থা হ'ল <shape>কোনও <item>উপাদানকে মোড়ক দেওয়া এবং পরিবর্তে সেখানে প্যাডিং সেট করা। নীচে লিঙ্কে বিস্তারিত রয়েছে তবে অন্যান্য অপশন উপলব্ধ আছে। যেমন

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="8dp"
        android:right="8dp"
        android:top="8dp"
        android:bottom="8dp">

        <shape android:shape="rectangle">
            ...
        </shape>
    </item>
</layer-list>

আপনার প্রয়োজনীয়তার উপর নির্ভর করে একটি স্তর-তালিকাটি ব্যবহার না করে আপনি নিম্নলিখিত আঁকানো ধরণের কোনও ব্যবহার করতে পারেন:

  • স্তর তালিকা
  • নির্বাচক
  • স্তর তালিকা
  • উত্তরণ

উপলব্ধ অঙ্কনযোগ্য প্রকারগুলি সম্পর্কে আরও তথ্যের জন্য এই অ্যান্ড্রয়েড ডকুমেন্টেশনটি দেখুন

সূত্র:


হ্যাঁ, আপনি উল্লেখ করেননি<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
user924

@ ব্যবহারকারী924 আমি নিশ্চিত যে আপনার পয়েন্টটি কী। এই আইটেমটিকে <ক্লেয়ার-লিস্ট> এর মধ্যে অন্তর্ভুক্ত করা যেতে পারে যদি সে কারও উদ্দেশ্যে কাজ করে তবে এটি মূল প্রশ্নের জন্য নয় বা কোনও
সরল

4
আমি বলতে চাইছি যে সংস্করণ ছাড়াই আপনি অনুলিপি এবং চালনা করতে পারেন এমন উদাহরণ দেওয়া ভাল, তবে এই ক্ষেত্রে <item> সমাধান হবে না (কারণ এটি <layer-list> এর অভ্যন্তরে হওয়া উচিত)
user924

4
@ ইউজার ২২৪ আমি আপনার এখন যা বোঝাতে চাইছি তা দেখিয়েছি এবং উত্তরটি উন্নত করতে সহায়তা করার জন্য অনেক ধন্যবাদ। আমি কোডের নমুনা আপডেট করেছি এবং উপলভ্য অঙ্কনযোগ্য ধরণের সম্পর্কে একটি মন্তব্য যুক্ত করেছি
TheIT

22

আপনি পোকামাকড় চেষ্টা করতে পারেন:

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="2dp"
    android:insetLeft="1dp"
    android:insetRight="20dp"
    android:insetTop="20dp">

    <shape android:shape="rectangle">

        <stroke
            android:width="1dp"
            android:color="#ffffff"
            android:dashWidth="2dp" />

        <solid android:color="@color/button_white_cover" />

        <corners android:radius="11dp" />
    </shape>

</inset>

22

লাইবোমায়ারের উত্তরটি কাজ করে, তবে এখানে একই সমাধান প্রয়োগ করা হয়েছে তবে একটি নতুন অঙ্কনযোগ্য তৈরি করার ওভারহেড ছাড়াই ফাইল বিশৃঙ্খলা হ্রাস করুন:

https://stackoverflow.com/a/3588976/578746

উপরের এসও উত্তরে আননের মাধ্যমে আনসারের অনুলিপি / আটকান:

<item android:left="6dp"
      android:right="6dp">

    <shape android:shape="rectangle">
        <gradient android:startColor="#ccd0d3"
                  android:centerColor="#b6babd"
                  android:endColor="#ccd0d3"
                  android:height="1px"
                  android:angle="0"/>
    </shape>
</item>


4
এই উত্তরটির জন্য ধন্যবাদ ইয়াহেল, তবে কেবলমাত্র উত্তর লিঙ্কটি পোস্ট করবেন না মনে রাখবেন। লিঙ্কের সামগ্রী পরিবর্তন বা অবৈধ হতে পারে বলে আপনার উত্তরে সর্বদা প্রয়োজনীয় সমস্ত তথ্য সরবরাহ করুন।
TheIT

উত্তর সম্পাদনা করেছেন
ইয়াহেল

9

আমি এই সমস্যার সমাধান করেছি:

<shape android:shape="oval"  >
    <stroke android:width="4dp" android:color="@android:color/transparent" />
    <solid android:color="@color/colorAccent" />
</shape>

এটিতে স্বচ্ছ স্ট্রোক যুক্ত হয়েছে।


চালাক, তবে আমি এটিকে একটি হ্যাক বিবেচনা করব: - /
dell116
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.