Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android ListView का रंग और फॉन्ट कैसे बदलें?

Android ListView के रंग और फॉन्ट कस्टमाइज़ करना

यह ट्यूटोरियल दिखाता है कि कैसे कस्टम एडाप्टर और लेआउट का उपयोग करके ListView आइटम्स के टेक्स्ट रंग, बैकग्राउंड रंग, और फॉन्ट स्टाइल बदले जाते हैं।

चरण 1: प्रोजेक्ट बनाएं

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: मेन लेआउट

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:background="#fbf9ea"
    tools:context=".MainActivity">
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@android:color/transparent"
        android:dividerHeight="8dp" />
</RelativeLayout>

चरण 3: कस्टम रो लेआउट

res/layout/list_item.xml - प्रत्येक रो के लिए कस्टम डिज़ाइन:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="16dp"
    android:background="@drawable/list_item_background">
    <ImageView
        android:id="@+id/itemIcon"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:src="@android:drawable/ic_menu_info_details"
        android:layout_marginEnd="16dp" />
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <TextView
            android:id="@+id/itemTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="आइटम शीर्षक"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="#333333" />
        <TextView
            android:id="@+id/itemSubtitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:text="आइटम उपशीर्षक"
            android:textSize="14sp"
            android:textColor="#666666" />
    </LinearLayout>
</LinearLayout>

चरण 4: रो बैकग्राउंड ड्रॉएबल

res/drawable/list_item_background.xml - स्टेट-आधारित बैकग्राउंड:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#E0E0E0" />
            <corners android:radius="8dp" />
        </shape>
    </item>
    <item android:state_selected="true">
        <shape>
            <solid android:color="#BBDEFB" />
            <corners android:radius="8dp" />
        </shape>
    </item>
    <item>
        <shape>
            <solid android:color="#FFFFFF" />
            <corners android:radius="8dp" />
            <stroke android:width="1dp" android:color="#E0E0E0" />
        </shape>
    </item>
</selector>

चरण 5: कस्टम एडाप्टर

src/CustomAdapter.java:

package com.app.sample;

import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;

public class CustomAdapter extends BaseAdapter {
    private Context context;
    private List<String> items;
    private List<String> subtitles;
    private Typeface customFont;

    public CustomAdapter(Context context, List<String> items, List<String> subtitles) {
        this.context = context;
        this.items = items;
        this.subtitles = subtitles;
        // कस्टम फॉन्ट लोड करें (assets/fonts/ से)
        try {
            customFont = Typeface.createFromAsset(context.getAssets(), "fonts/custom_font.ttf");
        } catch (Exception e) {
            customFont = Typeface.DEFAULT;
        }
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false);
            holder = new ViewHolder();
            holder.itemIcon = convertView.findViewById(R.id.itemIcon);
            holder.itemTitle = convertView.findViewById(R.id.itemTitle);
            holder.itemSubtitle = convertView.findViewById(R.id.itemSubtitle);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        
        holder.itemTitle.setText(items.get(position));
        holder.itemSubtitle.setText(subtitles.get(position));
        
        // कस्टम फॉन्ट लागू करें
        holder.itemTitle.setTypeface(customFont, Typeface.BOLD);
        holder.itemSubtitle.setTypeface(customFont, Typeface.NORMAL);
        
        // वैकल्पिक: पोजीशन के आधार पर रंग बदलें
        if (position % 2 == 0) {
            holder.itemTitle.setTextColor(context.getColor(R.color.colorPrimary));
        } else {
            holder.itemTitle.setTextColor(context.getColor(android.R.color.black));
        }
        
        return convertView;
    }

    static class ViewHolder {
        ImageView itemIcon;
        TextView itemTitle, itemSubtitle;
    }
}

चरण 6: MainActivity में उपयोग

src/MainActivity.java:

package com.app.sample;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ListView listView = findViewById(R.id.lv);
        
        List<String> titles = Arrays.asList(
            "पहला आइटम", "दूसरा आइटम", "तीसरा आइटम", 
            "चौथा आइटम", "पांचवा आइटम", "छठा आइटम"
        );
        
        List<String> subtitles = Arrays.asList(
            "उपशीर्षक 1", "उपशीर्षक 2", "उपशीर्षक 3",
            "उपशीर्षक 4", "उपशीर्षक 5", "उपशीर्षक 6"
        );
        
        CustomAdapter adapter = new CustomAdapter(this, titles, subtitles);
        listView.setAdapter(adapter);
        
        // क्लिक लिस्टनर
        listView.setOnItemClickListener((parent, view, position, id) -> {
            // हैंडल क्लिक
        });
    }
}

सिंपल एडाप्टर के साथ क्विक कस्टमाइजेशन

अगर सिंपल ArrayAdapter उपयोग कर रहे हैं:

// सिंपल कस्टम लेआउट के साथ ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<>(
    this, 
    R.layout.simple_list_item,  // कस्टम लेआउट जिसमें एक TextView हो
    R.id.textView,              // उस TextView की ID
    items
) {
    @NonNull
    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        TextView textView = view.findViewById(R.id.textView);
        textView.setTextColor(Color.BLUE);
        textView.setTypeface(Typeface.DEFAULT_BOLD);
        return view;
    }
};

चरण 7: मैनिफेस्ट

स्टैंडर्ड कॉन्फ़िगरेशन।

महत्वपूर्ण नोट: RecyclerView प्राथमिकता दें

ListView लीगेसी है। नए प्रोजेक्ट्स के लिए RecyclerView उपयोग करें:

  • बेहतर परफॉरमेंस (ViewHolder पैटर्न अनिवार्य)
  • लचीला लेआउट (Grid, Staggered, Horizontal)
  • एनिमेशन सपोर्ट (DefaultItemAnimator)
  • आसान डेकोरेशन (डिवाइडर, स्पेसिंग)

फॉन्ट्स के लिए बेस्ट प्रैक्टिस

  • फॉन्ट फाइल्स को res/font/ में रखें (API 26+) या assets/fonts/
  • XML में फॉन्ट फैमिली परिभाषित करें: android:fontFamily="@font/custom_font"
  • डाउनलोडेबल फॉन्ट्स के लिए Google Fonts API उपयोग करें
  1. Android WebView में फॉन्ट फेस कैसे बदलें? Android WebView में फॉन्ट फेस कैसे बदलें?

    WebView में कस्टम फॉन्ट लोड करने के लिए एसेट्स फोल्डर में HTML/CSS और फॉन्ट फ़ाइल रखने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट में WebView res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=https

  1. Android ListView का रंग और फॉन्ट कैसे बदलें? Android ListView का रंग और फॉन्ट कैसे बदलें?

    Android ListView के रंग और फॉन्ट कस्टमाइज़ करना यह ट्यूटोरियल दिखाता है कि कैसे कस्टम एडाप्टर और लेआउट का उपयोग करके ListView आइटम्स के टेक्स्ट रंग, बैकग्राउंड रंग, और फॉन्ट स्टाइल बदले जाते हैं। चरण 1: प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: मेन लेआउट res/layout/activity_ma

  1. Access में फ़ॉन्ट फेस, आकार और रंग कैसे बदलें Access में फ़ॉन्ट फेस, आकार और रंग कैसे बदलें

    इस पोस्ट में, हम आपको दिखाएंगे कि Microsoft Access में फ़ॉन्ट फेस, आकार और रंग कैसे बदलें। Microsoft Office में, एक फ़ॉन्ट एक टाइपफेस है, और आप इसका फेस, आकार और रंग बदल सकते हैं; यह आपके दस्तावेज़ों या डेटाबेस में टाइप करते समय एक बड़ी भूमिका निभाता है। Microsoft Office में बहुत सारी फ़ॉन्ट शैलियाँ