কোনও চিত্রভিউয়ের চারপাশে অযাচিত প্যাডিং


142

আমার সমস্ত ক্রিয়াকলাপ / দর্শনগুলিতে আমাকে একটি শিরোনাম গ্রাফিক অন্তর্ভুক্ত করতে হবে। শিরোনামযুক্ত ফাইলটিকে হেডার.এক্সএমএল বলা হয়:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content"
  android:background="#0000FF" 
  android:padding="0dip">

  <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="0dip"
    android:layout_marginTop="0dip"
    android:layout_marginBottom="0dip"
    android:padding="0dip"
    android:paddingTop="0dip"
    android:paddingBottom="0dip"
    android:layout_gravity="fill"
    android:background="#00FF00"
    />
</FrameLayout>

android:background="#00FF00"(সবুজ) নোট করুন , এটি কেবল ভিজ্যুয়ালাইজেশনের উদ্দেশ্যে।

আমি তাদের আমার মতামত এর মধ্যে অন্তর্ভুক্ত:

<?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"
  style="@style/white_background">

  <include layout="@layout/header" />
  (...)

সুতরাং, যখন আমি আসলে এটি চেষ্টা করে দেখি ফলাফলটি দেখতে (ডানদিকে) দেখতে কেমন হবে তার পরিবর্তে বাম চিত্রটির মতো দেখায়:

সবুজ সীমানা নোট করুন

(1) এটি - কমলা - অংশটি ইমেজ / ইমেজভিউতে প্রশ্নে রয়েছে
(২) অবারিত সবুজ সীমানা। দ্রষ্টব্য: সাধারণত, সবুজ অঞ্চল স্বচ্ছ হবে - এটি কেবলমাত্র সবুজ কারণ আমি সেট করেছি background

শীর্ষে চিত্রের চারপাশে সবুজ সীমানা নোট করুন; এটি ইমেজভিউর অংশ এবং এটি কেন আছে বা আমি কীভাবে এ থেকে মুক্তি পেতে পারি তা আমি ঠিক বুঝতে পারি না। এটি সমস্ত প্যাডিংস এবং মার্জিনকে 0 তে সেট করে (তবে আমি সেগুলি বাদ দিলে ফলাফলটি একই হয়)। চিত্রটি 480x64px জেপিগ * এবং আমি এটি রেজ / ড্রয়িংয়ে রেখেছি (একটিরও নয়)drawable-Xdpi যদিও ।

(* জেপেইগ, কারণ মনে হচ্ছে আমি পুরানো পিএনজি গামা সমস্যাটিকে হঠকারী হয়েছি - প্রথমে আমি সবুজ সীমানাকে ছবির মতো কমলা বানিয়ে সমস্যার চারপাশে কাজ করেছি, এবং রঙগুলি মেলে নি))

আমি এটি আমার এইচটিসি ইচ্ছা / ২.২ / বিল্ড 2.33.163.1 এবং এমুলেটরটিতে চেষ্টা করেছি। এছাড়াও আমি # অ্যান্ড্রয়েড-দেবের কারও কাছে সমস্যাটি বর্ণনা করেছি; তিনি সমস্যাটি পুনরুত্পাদন করতে পারতেন তবে তার কোনও ব্যাখ্যাও ছিল না। বিল্ড টার্গেট 1.6।

আপডেট @ টেহগুজ: এই কোডটি ঠিক একই শীর্ষে + নীচে প্যাডড ফল দেয়।

<?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"
  style="@style/white_background">

  <!-- <include layout="@layout/header" />  -->

  <ImageView
    android:src="@drawable/header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#00FF00"
    android:layout_weight="0"
    />

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="8dip"
    android:layout_weight="1">

    (... rest of the elements)

  </LinearLayout>
</LinearLayout>

নেতিবাচক মার্জিন এবং / অথবা প্যাডিং android:layout_margin="-10dp"android:padding="-10dp"
মানগুলিও

উত্তর:


442

পরিশেষে!

<ImageView
  (...)
  android:adjustViewBounds="true" />

adjustViewbounds অ্যাট্রিবিউট কৌতুক যা করেছে:

এটি যদি সত্যায়িত হয় তবে আপনি যদি চিত্রকল্পটি এর আঁকার দিকের অনুপাতটি সংরক্ষণ করার জন্য এর সীমানাকে সামঞ্জস্য করতে চান।

আমি এখানে হোঁচট খেয়েছি । আপনার সাহায্যের জন্য ধন্যবাদ!


7
আমার একই সমস্যা আছে, তবে এই সমাধানটির কোনও প্রভাব ছিল না।
মার্টি মিলার

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

দেবদেবীদের ধন্যবাদ আমি অ্যান্ড্রয়েডের ঝাঁকুনির কিছু খুঁজে পাওয়ার জন্য বাগ সমাধানের চেষ্টা থেকে আমার প্রথম প্রয়াসকে স্যুইচ করেছি। আমি বিশ্বাস করি এই সমস্যাটি কিছু নির্মাত্রে অ্যান্ড্রয়েড থেকে স্টাফ পরিবর্তন করে শুরু হয়েছিল এবং তারপরে তাদের পরবর্তী সংস্করণগুলিতে সমাধান করার জন্য তাদের একটি সম্পত্তি রাখতে হবে।
রাতটা টাটা

দুঃখের বিষয় এটি কম এপিএস, এপিআই 16 এবং 17 এর জন্য কাজ করে না।
luoser

1
বাহ আমি এটি যা খুঁজছিলাম ঠিক সেটাই ছিল, আমি কয়েক ঘন্টা ধরে আমার মাথা আঁচড়ান, এমনকি আমার লেআউটটিকে অকার্যকর করার চেষ্টা করে এবং চিত্রটির উচ্চতা / প্রস্থ নির্ধারণ করে। এমন একটি সহজ সমাধান যা স্কেলটাইপের প্রয়োজন ছাড়াই নিখুঁতভাবে কাজ করে।
কোডি এঞ্জেল

39
android:scaleType="fitXY"

এটা আমার জন্য কাজ করে.


3
scaleType="fitXY"যদিও কিছু আলাদা করে: এটি চিত্রের অনুপাতের পরিবর্তন করে, বিকৃতির দিকে নিয়ে যায়। এটি কখনও কখনও গ্রহণযোগ্য হতে পারে, যেমন একটি বিমূর্ত ব্যাকগ্রাউন্ড চিত্রের জন্য।
স্টেফস

1
আমি অ্যান্ড্রয়েড: প্রস্থ এবং অ্যান্ড্রয়েড: উচ্চতা এবং স্কেলটাইপ = "ফিটএক্সওয়াই" ব্যবহার করে আমার পক্ষে অনুপযুক্ত অনুপাতটি চিত্রের ভিউকে পূরণ করেছি, এটি আমার অভিজ্ঞতা ছিল। আপনার ইনপুট জন্য ধন্যবাদ।
বদর

It Works কিন্তু ভাবমূর্তি Unpretty, ভারসাম্যহীন করান হয়, মুণ্ডিত
최봉재

1
ঠিক তেমন নয় তবে অ্যান্ড্রয়েড: স্কেলটাইপ = "ফিটঅ্যান্ড" ম্যাজিকের মতো কাজ করেছে।
TheLibrarian

আমি আমার লেআউটে ইমেজভিউগুলি সারিবদ্ধ করার জন্য একটি সংমিশ্রণ পেয়েছি android:adjustViewBounds="true"এবং android:scaleType="fitXY"এটিই আমার প্রয়োজন ছিল। চিত্র শুধু সঙ্গে এক বা দুই পিক্সেল (ক হাই-মাঝামাঝি প্রদর্শনের খুব ছোট) দ্বারা বন্ধ ছিল adjustViewBounds। যোগ করার পদ্ধতি scaleTypeদৃশ্য সীমার পর ছবিটি একটি চূড়ান্ত আরোহী বলপূর্বক মূলত পেশ স্থায়ী হয় যা নতুন সীমার পূর্ণ মাপে স্কেল ছবিতে জোর বলে মনে হয়।
জেফ লকহার্ট

3

এটি চিত্রের অনুপাতের সাথে কাজ করে। ডিফল্টরূপে, সিস্টেমটি চিত্র উত্সের মূল দিক অনুপাত রাখে। যা বেশিরভাগ ক্ষেত্রে বিন্যাসে উল্লিখিত বিন্যাস বা মাত্রাগুলির সাথে ঠিক মেলে না। অতএব,

  1. হয় নির্ধারিত লেআউটে ফিট করার জন্য চিত্রের আকার পরিবর্তন করুন, বা
  2. android:scaleTypeইমেজ ফিট করতে ব্যবহার করুন । উদাহরণস্বরূপ, আপনি নির্দিষ্ট করতে পারেনandroid:scaleType="fitXY"

3

এগুলি অতিরিক্ত প্যাডিং স্বয়ংক্রিয়ভাবে তৈরি করা হয়েছে যেহেতু অ্যান্ড্রয়েড মূল দিক অনুপাত পাওয়ার চেষ্টা করবে। নীচে চেষ্টা করুন

scaletype = "fitCenter"
android:adjustViewBounds="true"
android:layout_height="wrap_content"

0

আপনি দিতে specific height to imageView say 50dp or 40dpএবং adjust image to make green borderঅদৃশ্য হতে পারে হতে পারে ।

উদাহরণ: android:layout_height="40dp"


লেআউট_উইথথ = "480px" এবং লেআউট_উইচটি = "64px" সেট করার ফলে আমি যে ফলাফলটি চাই তা ফলন করে তবে পিক্সেল খুব বেশি ব্যবহারিক নয়। আমি সত্যই বুঝতে পারি না যে এটি কীভাবে ডিপিতে অনুবাদ করে।
স্টেফস

আপনার পিক্সেল যেমন dp ব্যবহার করা উচিত। এগুলিই এগুলি; স্বতন্ত্র পিক্সেল প্রদর্শন করুন। কিন্তু এটি কাজ করে.
উদয়িরণ

ডিপি / ডিপ মানে ঘনত্বের স্বাধীন পিক্সেল; আমি যতদূর বুঝতে পেরেছি এটি বিভিন্ন ঘনত্বকে কভার করে, তবে (অবশ্যই) বিভিন্ন স্ক্রিনের আকার নয়। আমি যা চাই তা হ'ল চিত্রটি 100% পর্দার প্রস্থে স্কেল করা এবং উচ্চতাটি ছেড়ে দিন যাতে অনুপাতগুলি রাখা হয়।
স্টেফস

0
android:layout_height="wrap_content"

আপনার এটি "ফিল_প্যারেন্ট" হিসাবে পরিবর্তন করা দরকার

আপনার নিজের চিত্রটি স্কেল করতেও পারে তাই এটি ফ্রেমলেটে থাকা ফ্রেমআউটটি পূরণ করার জন্য সঠিক অনুপাত হবে।

আপনার কেন সেখানে ফ্রেম বিন্যাসের প্রয়োজন নেই তা আমি বুঝতে পারি না। এটি ছাড়া আপনার চিত্রটি যাইহোক স্ক্রিনটি পূরণ করবে।

সম্পাদনা: হ্যাঁ, দুঃখিত, এক্সএমএলটি চিত্র দেখার জন্য উচ্চতা।


1
যুক্ত করার জন্য কেবলমাত্র তাঁর লেআউটের উচ্চতা নির্ধারণ করা দরকার ImageView, এটি আপনার উত্তরে তেমন স্পষ্ট নয় :)
এর্নাজম

আমি আশেপাশের বিন্যাস ছাড়াই এটি চেষ্টা করেছিলাম, কোনও কিছু পরিবর্তন করে না। এছাড়াও, বর্তমান চিত্রটি কেবলমাত্র একটি স্থানধারক - শীঘ্রই অতিরিক্ত উপাদান থাকবে (পার্শ্ববর্তী বিন্যাসকে ন্যায়সঙ্গত করা)। আমি চাই না যে চিত্রটি পর্দার সাথে মেলে, আমি এটি কেবল সেখানে চাই, শীর্ষে।
স্টিফস

আপনার চিত্রের উপরে এবং নীচে ফাঁকা জায়গা আছে কিনা তা দেখতে ডাবল চেক করুন। যদি না হয় তবে অ্যান্ড্রয়েড: স্কেলটাইপ = "" ব্যবহার করে চিত্রের ভিউ অবজেক্টটি স্কেল করার চেষ্টা করুন। আপনি যা খুঁজছেন তা অনুসারে একটি থাকতে হবে।
নোটাকলভারম্যান

0

এই অ্যান্ড্রয়েডটি ব্যবহার করুন: স্কেলটাইপ = চিত্রের ভিউ এক্সএমএলে "ফিটএক্সওয়াই"


-1

আরও ভাল চেহারা দিতে আপনাকে চিত্রের চারদিকে আকৃতি সরবরাহ করতে হবে।

এখানে আমি কী ব্যবহার করেছি:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--<gradient android:startColor="#FFFFFF" android:endColor="#969696"

    android:angle="270">
-->
<gradient android:startColor="#FFFFFF" android:endColor="#FFFFFF"

    android:angle="270">
</gradient>
    <stroke android:width="2dp" android:color="@color/graycolor" />
<corners android:radius="2dp" />
<padding android:left="5dp" android:top="5dp" android:right="5dp"
    android:bottom="5dp" />


2
ওহো! আমি ইতিমধ্যে আকারগুলি (ট্যাব ব্যাকগ্রাউন্ডের জন্য) নিয়ে কাজ করেছি, তবে সত্যি বলতে কীভাবে এখানে এটি প্রয়োগ করা উচিত তা আমি বুঝতে পারি না।
স্টেফস

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