টেক্সটভিউ - পাঠ্য আকারটি প্রোগ্রামিং হিসাবে সেট করা কার্যকর বলে মনে হচ্ছে না


140

আমি Elpipse Indigo ব্যবহার করছি, 2 অনুকরণকারী (2.2 এবং 3.0) এর উপর পরীক্ষা করছি।

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

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

public class TestAndroidvs2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView text = new TextView(this);
    text.setTextColor(Color.RED);
    text.setTextSize(2);    
    text.setBackgroundColor(Color.BLUE);
    text.setText("Hello Android");


    setContentView(text);
  }
}

উত্তর:


19

পাঠ্য আকার 2 ব্যবহারিকভাবে অদৃশ্য হবে। এটি কমপক্ষে 14 দিয়ে চেষ্টা করুন। বিটিডাব্লু, এক্সএমএল ব্যবহারের অনেক সুবিধা রয়েছে এবং 'হ্যালো ওয়ার্ল্ড' এর চেয়ে আরও জটিল কিছু করার দরকার পরে আপনার জীবন আরও সহজ করে তুলবে।


আমি এটি 14 দিয়ে চেষ্টা করব As যেমনটি আমি প্রথম পোস্টে বলেছিলাম - 2 খুব ছোট হলেও এটি আমার পর্দাটি খালি করা উচিত নয়? আমি অনুমান করি যে আমি এটি কেবল মাত্র আকার নির্ধারণের পরিবর্তে পাঠ্যটি ইতিমধ্যে যা ছিল তার বাইরে স্কেল হিসাবে পড়ছিলাম। - আমি দেখব তবে আমি যেভাবেই জিজ্ঞাসা করব - ডিফল্ট আকারটি কী? যাইহোক ধন্যবাদ.
সিএসপ্যাম

বিটিডব্লিউ - হ্যাঁ আমি বুঝতে পারছি এক্সএমএল এর সুবিধাগুলি থাকতে পারে তবে এর সাথে আমার শূন্য অভিজ্ঞতা রয়েছে। হ্যাঁ আমি এটি সম্ভবত শিখতে সহজ জানি। যেহেতু আমি ইতিমধ্যে জাভা সম্পর্কে পরিচিত, আমি কেবল ভেবেছিলাম যতটা সম্ভব ক্লাসের সাথে পরিচিত হওয়ার জন্য এটি সত্যই কার্যকর হবে। দেখে মনে হচ্ছে এক্সএমএল বাছাই করা আপনার কাছ থেকে অনেক কিছু আড়াল করে।
সিএসপিএমে

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

আপনি কি কোনও কারণের ভিত্তিতে রান সময় লেআউট এবং অরিয়েন্টেশন পরিবর্তন করতে সক্ষম হবেন?
সিএসপ্যাম

এটি খুব বিস্তৃত প্রশ্ন, তবে সংক্ষেপে হ্যাঁ। আপনি যদি আপনার ইউআইএটি এক্সএমএলে সংজ্ঞায়িত করেন তবে আপনি রান চালানোর সময় এখনও দেখা / যোগ করতে পারেন। আপনি ডিফল্ট আচরণকে ওভাররাইড করতে পারেন এবং পরিচালনা ওরিয়েন্টেশন নিজেকে পরিবর্তন করতে পারেন।
নিকোলে এলেনকোভ

535

পদ্ধতি TextView.setTextSize(int unit , float size);দুটি পরামিতি লাগে।

এটা চেষ্টা কর :

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

এটি এবং এই উল্লেখ করুন ।

আপডেট: এখন setTextSize(float size)পাঠ্য আকারটি স্বয়ংক্রিয়ভাবে " scaled pixel" ইউনিটে সেট করবে set ম্যানুয়ালি COMPLEX_UNIT_SP উল্লেখ করার দরকার নেই। পড়ুন ডকুমেন্টেশন


36
এটা সঠিক উত্তর. আরও সুনির্দিষ্টভাবে: float myTextSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 18F, context.getResources().getDisplayMetrics());
ব্রিল প্যাপিন

2
আপনাকে অনেক ধন্যবাদ!
দিমিত্রিকানুন্নিকফ

72

এটি আমার জন্য সমস্যাটি স্থির করেছে। আমি সমস্ত ডিভাইসগুলিতে অভিন্ন ফন্টের আকার পেয়েছি।

 textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));

R.dime.font ইউনিফর্ম নম্বর বা আপনার বিভিন্ন ডিভাইসের জন্য বিভিন্ন আকার আছে?
The_Martian

আমার ক্ষেত্রে আমি এই ফোল্ডারগুলিতে ফাইলের आयाम.এক্সএমএলে ফন্ট ঘোষণা করেছি: নির্দিষ্ট মান সহ মান, মান-sw600dp, মান-sw720dp।
বিকাশ

এটি অদ্ভুত যে পাঠ্যদর্শনটি TextView.setTextSize (R.dime.text_size_max) কল করার পরে অদৃশ্য হয়ে গেছে, তবে আপনার পদ্ধতিটি ব্যবহার করুন, এটি কার্যকর।
li2

আমার জন্য কাজ কর. ধন্যবাদ!
অপূর্ব ঠাকর

24

বর্তমানে, setTextSize(float size)পদ্ধতিটি ভালভাবে কাজ করবে সুতরাং পাঠ্যের আকার পরিবর্তনের জন্য আমাদের আর কোনও পদ্ধতি ব্যবহার করার দরকার নেই

android.widget.TextView.java উত্স কোড

/**
 * Set the default text size to the given value, interpreted as "scaled
 * pixel" units.  This size is adjusted based on the current density and
 * user font size preference.
 *
 * <p>Note: if this TextView has the auto-size feature enabled than this function is no-op.
 *
 * @param size The scaled pixel size.
 *
 * @attr ref android.R.styleable#TextView_textSize
 */
@android.view.RemotableViewMethod
public void setTextSize(float size) {
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}

ব্যবহার উদাহরণ

textView.setTextSize(20); // set your text size = 20sp


12

কোডটিতে পাঠ্যের আকার নির্ধারণের বিষয়ে আরও তথ্যের জন্য দয়া করে এই লিঙ্কটি দেখুন। মূলত এটি বলে:

পাবলিক অকার্যকর সেটটেক্সট সাইজ (ইন ইউনিট, ভাসমান আকার)

যেহেতু: API স্তর 1 প্রদত্ত ইউনিট এবং মানকে ডিফল্ট পাঠ্য আকার সেট করুন। সম্ভাব্য মাত্রা ইউনিটগুলির জন্য টাইপডভ্যালু দেখুন । সম্পর্কিত এক্সএমএল বৈশিষ্ট্য

অ্যান্ড্রয়েড: টেক্সট সাইজ প্যারামিটার

ইউনিট পছন্দসই মাত্রা ইউনিট।
আকার প্রদত্ত ইউনিটগুলিতে পছন্দসই আকার।


1
আমি আমার কোডটিতে ইলিপসে সবেমাত্র ডাবল চেক করেছি এবং ইন্টেলিসেন্স অনুসারে আমার কাছে সেটটেক্সট সাইজ, সেটটেক্সট সাইজ (ফ্লোট সাইজ), সেটটেক্সট সাইজ (ইনট ইউনিট, ফ্লোট সাইজ) 2 টি বিকল্প রয়েছে। আপনার লিঙ্ক করা ডকুমেন্টেশন এটির সত্যতা নিশ্চিত করে।
সিএসপ্যাম

ঠিক - আপনি এটি চেষ্টা করে? এছাড়াও নিকোলে বলেছেন 2 দেখার উপায় ছোট হবে, পাশাপাশি আরও বাড়ানোর চেষ্টা করুন।
জ্যাক

হ্যাঁ তবে সমস্যাটি হ'ল আমি যখন এখন এটির মতো করার চেষ্টা করি তখন লেখাটিও প্রদর্শিত হয় না। এটি কেবল একটি ফাঁকা স্ক্রিন। এমনকি যদি 2 টি লক্ষণীয় না হয় তবে পর্দাটি ফাঁকা কেন?
সিএসপ্যাম

এটি ফাঁকা নয়। আপনি যদি সত্যিই কাছাকাছি দেখেন তবে আপনি দেখতে পাবেন ছোট্ট লাল পিক্সেল :)। দেখতে ধীরে ধীরে আকার বাড়ান।
নিকোলে এলেনকভ

এবং যাইহোক, সেটটেক্সটসাইজ (ফ্লোট) সেটটেক্সট সাইজের (COMPLEX_UNIT_SP, ফ্লোট) সমতুল্য।
নিকোলে এলেনকভ

10

আমার ক্ষেত্রে এই পদ্ধতিটি ব্যবহৃত হয়েছে :

public static float pxFromDp(float dp, Context mContext) {
    return dp * mContext.getResources().getDisplayMetrics().density;
}

এখানে টেক্সটভিউয়ের টেক্সটসাইজ প্রোগ্র্যাম্যাটিকভাবে সেট করুন :

textView.setTextSize(pxFromDp(18, YourActivity.this));

উপভোগ করুন :)


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