প্রোগ্রামিয়ালি ভিউতে প্যাডিং যুক্ত করুন


235

আমি অ্যান্ড্রয়েড ভি 2.2 অ্যাপটি সরিয়ে ফেলছি।

আমি একটি আছে টুকরা

ইন onCreateView(...)আমার টুকরা ক্লাসের কলব্যাক, আমি নিচের মত টুকরা একটি লেআউট ফোলান:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.login, null);

    return view;
}

উপরের স্ফীত লেআউট ফাইলটি (login.xML):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
 >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Username" />


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Username" />

</LinearLayout>

আমি paddingTopউপরের <LinearLayout>উপাদানটির জন্য একটি সেট করতে চাই এবং আমি এটি এক্সএমএল না করে জাভা কোডে করতে চাই।

আমার টুকরা জাভা ক্লাস কোডে কিভাবে সেট paddingTopকরবেন <LinearLayout>??


2
আপনার লিনিয়ারলআউটে আপনাকে একটি আইডি নির্ধারণ করতে হবে যাতে আপনি এটির সাথে এটি খুঁজে পেতে findViewByIdএবং তারপরে কল setPaddingকরতে পারেন।
আলেক্স জি

@ অ্যালেক্সজি সাধারণভাবে হ্যাঁ, তবে লিনিয়ারালাউটটি স্ফীত হাইরাচির মূল উপাদান যা এখানে প্রয়োজনীয় নয়। viewইতিমধ্যে লিনিয়ারলআউট, এই ক্ষেত্রে এটি আবার খুঁজে পাওয়ার দরকার নেই। এটি দেওয়া হলেও এটি একটি বিশেষ।

1
@ অ্যালেক্সটস্ক: হ্যাঁ, একমত তবুও, আমি এখনও আইডি এর যে কোনও কিছুতে অ্যাপ্লিকেশনটিতে উল্লেখ করতে পারি assign
আলেক্স জি

উত্তর:


486

view.setPadding(0,padding,0,0);

এটি শীর্ষ প্যাডিং- paddingপিক্সেল সেট করবে ।

আপনি যদি এর dpপরিবর্তে সেট করতে চান তবে আপনি একটি রূপান্তর করতে পারেন :

float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);

6
ক্রিস যেমন @ লিম.ফিন বলেছেন, এটি পিক্সেল। আপনি যদি ডিপি চান তবে আপনাকে রূপান্তরটি ম্যানুয়ালি করতে হবে:float scale = getResources().getDisplayMetrics().density; int size = (int) (sizeInPx*scale + 0.5f);
জাভে

7
0.5f কোথা থেকে আসছে?
হের ভন ওয়ার্স্ট

11
@Georg কোড এখান থেকে নেওয়া হয় যে: developer.android.com/guide/practices/... 0.5 যখন ভোটদান নিকটতম পূর্ণসংখ্যা পেতে ব্যবহার করা হয় (পরিবর্তে ব্যবহার করার Math.round ())
Jave

আমি ভেরিয়েবলের নামগুলি অন্যভাবে হওয়া উচিত বলে মনে করি: sizeInDpআসলে sizeInPxডিপিএস রূপান্তর করার সময় আপনি যে পিক্সেল পান সেটিই।
friederbluemle

99

আপনার দ্বিতীয় প্রশ্নের উত্তর দিতে:

view.setPadding(0,padding,0,0);

স্পেকে এবং জাভের পরামর্শ মতো, প্যাডেলগুলিতে প্যাডিং সেট করবে। আপনি নিম্নলিখিত হিসাবে ডিপি মান গণনা করে এটি ডিপিতে সেট করতে পারেন:

int paddingDp = 25;
float density = context.getResources().getDisplayMetrics().density
int paddingPixel = (int)(paddingDp * density);
view.setPadding(0,paddingPixel,0,0);

আশা করি এইটি কাজ করবে!


3
অবশ্যই এটি সংকলন এবং প্রত্যাশার মতো কাজ করবে, তবে স্বচ্ছতার জন্য আপনার নিজের ভেরিয়েবলের নাম পরিবর্তন করা উচিত। কারণ আপনি আপনার প্যাডিংকে ডিপিতে সংজ্ঞায়িত করেন এবং গণনা করেন যে এই প্রদত্ত ডিভাইসের জন্য এটি পিক্সেলে কী হবে।
Glenn85

আপনি পিপিএলে ডিপি রূপান্তর করছেন। পরিবর্তনশীল নাম গুলিয়ে ফেলছে। "প্যাডিংপিক্সেল" এর অর্থ সত্যই ডিপি
জিইচাও ওয়াং

92

আপনি যদি রিসোর্স ফাইলগুলিতে প্যাডিং সঞ্চয় করেন তবে আপনি কেবল কল করতে পারেন

int padding = getResources().getDimensionPixelOffset(R.dimen.padding);

এটি আপনার জন্য রূপান্তর করে।



15

আপনি নীচের কোড জুড়ে ব্যাকরণগতভাবে আপনার দৃষ্টিতে প্যাডিং সেট করতে পারেন -

view.setPadding(0,1,20,3);

এবং, বিভিন্ন ধরণের প্যাডিংও পাওয়া যায় -

প্যাডিং

PaddingBottom

PaddingLeft

PaddingRight

প্যাডিং শীর্ষ

এগুলি, লিঙ্কগুলি অ্যান্ড্রয়েড বিকাশকারী সাইটের উল্লেখ করবে। আশা করি এটি আপনাকে অনেক সাহায্য করবে।


@ লীম.ফিন এটিকে একবার দেখুন আপনি পার্থক্যটি জানতে পারবেন।
প্রবীণকুমার

9

TypedValueম্যানুয়ালি গণনার তুলনায় পিক্সেলগুলিতে রূপান্তরিত করার একটি আরও পরিষ্কার উপায় ব্যবহার করা:

float paddingDp = 10f;
// Convert to pixels
int paddingPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, paddingDp, context.getResources().getDisplayMetrics());
view.setPadding(paddingPx, paddingPx, paddingPx, paddingPx);

মূলত, TypedValue.applyDimensionবর্তমান ডিভাইসের প্রদর্শন বৈশিষ্ট্যের উপর নির্ভর করে কাঙ্ক্ষিত প্যাডিংটিকে যথাযথভাবে পিক্সেলে রূপান্তরিত করে।

আরও তথ্যের জন্য দেখুন: typedValue.applyDimesion ডক্স


1
px এবং dp বিপরীত করা উচিত নয়?
chris838

আমি মনে করি আমি যা করছি তার সংক্ষেপটি সঠিক। তবে নামকরণ বিভ্রান্তিকর বলে মনে করি। আমি এটি আরও পরিষ্কার হতে সম্পাদনা করব। সাহায্য করার জন্য ধন্যবাদ.
i2097i

7

গতিশীল প্যাডিং সেট করার জন্য নীচের পদ্ধতিটি ব্যবহার করুন

setPadding(int left, int top, int right, int bottom)

উদাহরণ:

view.setPadding(2,2,2,2);

3

প্যাডিং সেট করতে নিম্নলিখিত কোডটি লিখুন, এটি আপনাকে সহায়তা করতে পারে।

TextView ApplyPaddingTextView = (TextView)findViewById(R.id.textView1);
final LayoutParams layoutparams = (RelativeLayout.LayoutParams) ApplyPaddingTextView.getLayoutParams();

layoutparams.setPadding(50,50,50,50);

ApplyPaddingTextView.setLayoutParams(layoutparams);

শিশু দর্শন পিতামাতার বিন্যাস অনুযায়ী LinearLayout.LayoutParamsবা ব্যবহার করুনRelativeLayout.LayoutParams


সেটপ্যাডিং () লেআউটপ্যারাম থেকে কোনও অ্যাক্সেসযোগ্য পদ্ধতি নয়। আমি নিশ্চিত যে এটি কখনও ছিল কিনা।
শ্রীরাম

2
Context contect=MainActivity.this;
TextView tview=new TextView(context);
tview.setPaddingRelative(10,0,0,0);

4
এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত, তাত্ক্ষণিক সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান এবং এটি ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলে ধরে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
মকর রাশি

0

প্রোগ্রামিংয়ে প্যাডিংয়ের সময়, পিক্সেলকে ডিপিতে রূপান্তর করে ঘনত্ব সম্পর্কিত মানগুলিতে রূপান্তর করুন।

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