অ্যান্ড্রয়েডে দর্শনের জন্য গ্লোবাল শৈলী সেট করা


125

ধরা যাক আমি TextViewআমার অ্যাপ্লিকেশনটিতে থাকা সমস্ত দৃষ্টান্ত চাই textColor="#ffffff"। প্রত্যেকের জন্য এটি সেট করার পরিবর্তে সেটি এক জায়গায় সেট করার কোনও উপায় আছে কি TextView?


1
আমি আমার প্রশ্নটি আপডেট করেছি যাতে এটি আরও সম্পূর্ণ হয়।
ক্রিশ্চিয়ান

আমি এখানে কিছু অনুরূপ করছি !!! stackoverflow.com/questions/17103894/...
toobsco42

উত্তর:


250

প্রকৃতপক্ষে, আপনি কোনও কাস্টম জাভা ক্লাস না করে বা পৃথকভাবে শৈলীটি সেট না করেই টেক্সটভিউগুলির (এবং বেশিরভাগ বিল্ট-ইন উইজেটগুলি) ডিফল্ট স্টাইল সেট করতে পারেন।

যদি আপনি themes.xmlঅ্যান্ড্রয়েড উত্সটিতে একবার দেখে থাকেন, আপনি বিভিন্ন উইজেটের জন্য ডিফল্ট শৈলীর জন্য গুচ্ছের গুচ্ছ দেখতে পাবেন। কীটি হ'ল textViewStyle(বা editTextStyle, ইত্যাদি) বৈশিষ্ট্য যা আপনি আপনার কাস্টম থিমটিতে ওভাররাইড করেন। আপনি নিম্নলিখিত উপায়ে এগুলি ওভাররাইড করতে পারেন:

একটি তৈরি করুন styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="android:Theme">
    <item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>

<style name="MyTextViewStyle" parent="android:Widget.TextView">
    <item name="android:textColor">#F00</item>
    <item name="android:textStyle">bold</item>
</style>
</resources>

তারপরে আপনার অ্যাপ্লিকেশনটিতে কেবল সেই থিমটি এখানে প্রয়োগ করুন AndroidManifest.xml:

<application […] android:theme="@style/MyTheme">

এবং আপনার সমস্ত পাঠ্য দর্শন ডিফল্ট হবে শৈলীতে সংজ্ঞায়িত MyTextViewStyle(এই উদাহরণস্বরূপ, সাহসী এবং লাল)!

এটি এপিআই স্তর 4 থেকে ডিভাইসগুলিতে পরীক্ষা করা হয়েছিল এবং দুর্দান্ত কাজ করে বলে মনে হচ্ছে।


1
আমি এখনও অবধি সবচেয়ে মার্জিত সমাধান দেখেছি।
Italo Borssatto

@ স্টিভ, যদি আমি আইটেমটি <item name="android:textViewStyle">@style/MyTextViewStyle</item>স্টাইল মাই থিমের অন্তর্ভুক্ত করি এবং তারপরে আমার আবেদনে শৈলীটি প্রয়োগ করি তবে আমার সমস্ত TextViewগুলি শৈলী অনুসারে প্রদর্শিত হবে (এমনকি অ্যাকশন বারে অ্যাপ্লিকেশনটির নামও)। অ্যাকশন বার দিয়ে কীভাবে বিষয়টি ঠিক করবেন? আমি এটির ডিফল্ট উপস্থিতি চাই। গিথুব
মাকসিম দিমিত্রিভ

@ স্টিভ, অ্যাপ্লিকেশনে কীভাবে (অ্যাকশন বার এবং উইজেট) উভয় থিম প্রয়োগ করবেন
প্রতীক বুটানি

অ্যাকশনবারকে কীভাবে অন্যান্য জিনিস থেকে আলাদা করতে হয় সে সম্পর্কে আমি নিশ্চিত নই। আপনার অ্যাকশনবারের স্টাইলটি যেখানেই সেট করা <item name="android:textViewStyle">@style/MyTextViewStyle</item>আছে সেখানে আপনি সন্ধান করতে পারেন এবং কেবল সেখানে অ্যাকশনবারের ডিফল্টটিকে নির্দেশ করে (বা এর মতো কিছু)
স্টিভ পোমরোয়

@ স্টিভপোমরোয় এটি আমার পক্ষে কাজ করে না .. আপনি কি কিছু সমর্থন সরবরাহ করতে পারেন? টেক্সটভিউগুলির জন্য আমার স্টাইলটি একই থাকে। আমার কি ন্যূনতম আইটেম সেট করতে হবে বা এমন কিছু আইটেম আছে যা আমাকে সেট করার অনুমতি নেই?
মাইক 21

52

এটি করার দুটি উপায় রয়েছে:

1. শৈলী ব্যবহার করে

আপনি res/valuesডিরেক্টরিতে এক্সএমএল ফাইল তৈরি করে আপনার নিজের শৈলীর সংজ্ঞা দিতে পারেন । সুতরাং, ধরা যাক আপনি লাল এবং গা bold় পাঠ্য রাখতে চান তবে আপনি এই বিষয়বস্তু দিয়ে একটি ফাইল তৈরি করুন:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyRedTheme" parent="android:Theme.Light">
    <item name="android:textAppearance">@style/MyRedTextAppearance</item>
  </style>
  <style name="MyRedTextAppearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">#F00</item>
    <item name="android:textStyle">bold</item>
  </style>
</resources>

উদাহরণস্বরূপ আপনি এটির মতো নামকরণ করতে পারেন res/values/red.xml। তারপরে, আপনাকে কেবলমাত্র যা করতে হবে তা হল আপনার পছন্দসই উইজেটগুলিতে সেই দৃশ্যটি ব্যবহার করা:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    style="@style/MyRedTheme"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is red, isn't it?"
    />
</LinearLayout>

আরও রেফারেন্সের জন্য, আপনি এই নিবন্ধটি পড়তে পারেন: অ্যান্ড্রয়েড থিম এবং স্টাইল বুঝতে

2. কাস্টম ক্লাস ব্যবহার করে

এটি অর্জনের এটি আরেকটি সম্ভাব্য উপায় এবং এটি আপনার নিজের সরবরাহ TextViewকরা যা আপনি যা চান তা পাঠ্যের রঙকে সর্বদা সেট করে; এই ক্ষেত্রে:

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.TextView;
public class RedTextView extends TextView{
    public RedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setTextColor(Color.RED);
    }
}

তারপরে, আপনাকে কেবল TextViewআপনার এক্সএমএল ফাইলে এটি স্বাভাবিক হিসাবে বিবেচনা করতে হবে:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<org.example.RedTextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is red, isn't it?"
    />
</LinearLayout>

আপনি এক বা অন্য পছন্দটি ব্যবহার করুন তা আপনার প্রয়োজনের উপর নির্ভর করে। যদি আপনি একমাত্র জিনিসটি করতে চান তবে চেহারাটি পরিবর্তন করা হয়, তবে সেরা পদ্ধতির বিষয়টি প্রথম। অন্যদিকে, আপনি যদি চেহারাটি পরিবর্তন করতে চান এবং আপনার উইজেটগুলিতে কিছু নতুন কার্যকারিতা যুক্ত করতে চান তবে দ্বিতীয়টি হ'ল উপায়।


কাস্টম ক্লাস ব্যবহার করা পছন্দ করা উচিত কারণ এটি ক্লিনার পদ্ধতির এবং এক্সএমএল ফাইলের হালকা ওজন রাখতে সহায়তা করে।
অমিত কুমার

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

এক্সএমএল থেকে কাস্টম ভিউয়ের স্টাইলটি সেট করা সম্ভব নয় কি? আমরা custom_view_layout.xmlকাস্টম ক্লাস বাড়ানোর জন্য যে ফাইলটি ব্যবহৃত হয় তা কেন ব্যবহার করতে পারি না ?
lucidbrot

5

ডিফল্ট পাঠ্যের রঙের জন্য TextView, android:textColorTertiaryআপনার থিমটি পছন্দসই রঙে সেট করুন:

<item name="android:textColorTertiary">@color/your_text_color</item>

অন্য অনেক অ্যান্ড্রয়েড নিয়ন্ত্রণের রঙ ফ্রেমওয়ার্ক বৈশিষ্ট্যগুলি ব্যবহার করে বা লাইব্রেরির বৈশিষ্ট্যগুলিকে সমর্থন করে যদি আপনি সমর্থন লাইব্রেরি ব্যবহার করেন তবে নিয়ন্ত্রণ করা যায়।

বৈশিষ্ট্যাবলী সেট করতে পারেন, একটি তালিকার জন্য, চেক আউট অ্যান্ড্রয়েড সোর্স কোড এর styles.xmlএবং themes.xml, বা এই খুব সহায়ক সারকথা ড্যান Lew দ্বারা, প্রতিটি মান পরিবর্তন করার চেষ্টা এবং তারা কি পর্দায় পরিবর্তন দেখতে পাচ্ছি।


আপনি মানুষ ধন্যবাদ! আমি পাঠ্য কালারপ্রাইমারি কেন কাজ করে না তা ভেবে অনেক সময় ব্যয় করেছি।
প্রাতঃ

3

একটি স্টাইল সংজ্ঞায়িত করুন এবং প্রতিটি উইজেটে এটি ব্যবহার করুন, একটি থিম সংজ্ঞায়িত করুন যা সেই উইজেটের জন্য অ্যান্ড্রয়েড ডিফল্টকে ওভাররাইড করে, বা একটি স্ট্রিং সংস্থান সংজ্ঞা দেয় এবং প্রতিটি উইজেটে রেফারেন্স দেয়

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