অ্যান্ড্রয়েড: তালিকাতে হাইলাইট অক্ষম করছে দেখুন ক্লিক করুন


302

আমি তালিকাভিউ সারিতে স্পর্শ করার সময় ঘটে যাওয়া কমলা হাইলাইটটি অক্ষম করতে চাই। এখন পর্যন্ত আমার এক্সএমএলে আমি নিম্নলিখিতটি চেষ্টা করেছি:

android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"

আরও তথ্য: কোনও ব্যবহারকারী এই তালিকার ভিউ অবজেক্টে স্ক্রিনটি স্পর্শ করলে শূন্যের পার্থক্য থাকতে চাই।

উত্তর:


674

এটি আপনার এক্সএমএলে যুক্ত করুন:

android:listSelector="@android:color/transparent"

এবং সমস্যার জন্য এটি কাজ করতে পারে (আমি নিশ্চিত না এবং আরও ভাল সমাধান আছে কিনা তা আমি জানি না):

আপনি আপনার টেক্সটভিউতে একটি কালারস্টেটলিস্ট প্রয়োগ করতে পারেন ।


2
স্বচ্ছ যদি এখনও নির্বাচনকে কিছুটা অন্ধকার করে দেয় তবে সম্ভবত এটি সম্পূর্ণ স্বচ্ছ হিসাবে সংজ্ঞায়িত হয়নি। পরিবর্তে # 00000000 চেষ্টা করুন, এটি সম্পূর্ণ অদৃশ্য।
রিডকুলি

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

@RoflcoptrException আমি Fragmentতালিকার জন্য একটি ব্যবহার করি । এক্সএমএল লেআউটে একটি LinearLayoutএবং একাধিক TextViewআইটেম রয়েছে। দয়া করে আমার সারি হাইলাইটটি কোথায় অক্ষম করা উচিত?
জেজেডি

40
জাভা কোড থেকে, আপনি করতে পারেনlistView.setSelector(android.R.color.transparent);
স্লাই

@RoflcoptrException -> "আপনি আপনার টেক্সটভিউতে একটি কালারস্টেটলিস্ট প্রয়োগ করতে পারেন" - যদি তালিকা সারিগুলি ক্লিকযোগ্য না হয় তবে এটি একটি ভাল বিকল্প। পাঠ্যদর্শনটি ক্লিকযোগ্য হওয়ার সাথে সাথে তালিকার অনক্লিক ইভেন্টটি নিজেই আগুন নেবে না।
সেবাস্তিয়ান হোজাস

189

রোফকপ্ট্রএক্সসেপ্টের উত্তরটির কৌশলটি করা উচিত, তবে কোনও কারণে এটি আমার পক্ষে কার্যকর হয়নি, সুতরাং আমি যে সমাধানটি আমার পক্ষে কাজ করেছিলাম তা পোস্ট করছি, আশা করি এটি কারও সাহায্য করে

<ListView 
android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
/>

101

কমলা হাইলাইট প্রভাব তালিকাভিউতে একটি স্টাইলএই নিবন্ধটি তালিকাভিউ শৈলীতে কীভাবে ওভাররাইড করতে হয় তার একটি ভাল ওভারভিউ দেয়।

মূলত, আপনার কাছে এমন একটি নির্বাচক রয়েছে যা বর্তমান অবস্থার উপর ভিত্তি করে বিভিন্ন স্টাইলের উপাদান নির্দিষ্ট করে।

সংক্ষিপ্ত এবং দ্রুত সমাধানের জন্য এটি দেখুন https://stackoverflow.com/a/12242564/185022


এই পদ্ধতিটি আমাকে প্রতিটি তালিকাভিউ অবজেক্টের জন্য আলাদা স্টাইল রাখতে দেয়? এছাড়াও, আমি যে বিষয়টি সেবীর উত্তর নিয়ে এসেছি তা এড়ানো কি সম্ভব?
জন মফিট

1
হ্যাঁ, আপনি কোনও স্টাইলের বৈশিষ্ট্যগুলিকে ওভাররাইড করতে পারেন। প্রথম লিঙ্কে বর্ণিত স্টাইল = "@ শৈলী / মাইস্টাইল" বৈশিষ্ট্যটি ব্যবহার করে আপনি প্রতিটি তালিকাভিউতে বিশেষত একটি শৈলী নির্ধারণ করতে পারেন।
চেরিল সাইমন

আমি দুঃখিত, তবে এর উত্তর হওয়া উচিত নয়। এটি পরিবর্তন করা listSelectorউচিত।
আয়মান সালাহ 21

63

তালিকাভিউ থেকে : ফোকাস হাইলাইট অক্ষম করুন ,

আপনি যখন ListAdapterনিম্নলিখিত কোডটি ব্যবহার করবেন সেট করুন

ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c, 
                new String[] { "Name", "Score" }, to) 
{ 
    public boolean areAllItemsEnabled() 
    { 
        return false; 
    } 
    public boolean isEnabled(int position) 
    { 
        return false; 
    } 
}; 

এটি ক্লাসটিকে ওভাররাইড করবে BaseAdapter। এটি কোষগুলির মধ্যে সাদা সীমানা বাতিল করে।


4
অবৈধ, এটি আইটেমটির জন্য নির্বাচনের আচরণকে অক্ষম করেছে (অনআইটেমিক্লিকড গুলি চালিত হবে না)
স্যান্ডর

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

তা ছাড়া এটি এই প্রশ্নের উত্তর নয়, isEnabledকোনও আইটেম অক্ষম করার জন্য ওভাররাইড করা এটিকে অক্ষম করার উপায় নয়! ডকুমেন্টেশন বলে যে isEnabledএটি কোনও আইটেম বিভাজক কিনা তা নির্ধারণ করার কথা।
বখশি

39

এটিকে আপনার এক্সএমএলে যোগ করুন তালিকার বাছাইকারী সহ..ও এটি কাজ করবে

<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/> 

2
অনেক ধন্যবাদ. আমি সেই সমস্যাটি সমাধান করতে চাই যা পুরো তালিকাভিউ হাইটলাইটযুক্ত (আমার ক্ষেত্রে সাদা রঙ) স্ক্রোল করার সময় (কেবলমাত্র অ্যান্ড্রয়েড 2.3 এর আগে ঘটে)। এবং এটি কাজ করে।
ইয়েং

"# 00000000" এবং "@ অ্যান্ড্রয়েড: রঙ / স্বচ্ছ" বিভিন্ন ধরণের জন্য?
অ্যান্ড্রয়েডার

@ এন্ড্রোয়াইডার ইয়া ২০১১ সালে আমি লোককে এটি উভয়ভাবেই কাজ করতে দিচ্ছি ... অবশ্যই আজ আপনার প্রয়োজন হবে না # 000000
পত্রিকা

32

আপনি যদি ব্যবহার করছেন ArrayAdapterবা BaseAdapterতালিকা আইটেমগুলি পপুলেট করতে পারেন। পদ্ধতি এবং বিনিময়ে ।OverrideisEnabledfalse

 @Override
  public boolean isEnabled (int position) {
    return false;
  }

13

ভার্চুয়াল এবং বাস্তব ডিভাইসগুলিতে কয়েকটি 'গুগল' করার এবং পরীক্ষার পরে, আমি আমার নীচের কোডটি লক্ষ্য করছি:

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
    public boolean isEnabled(int position) 
    { 
            return false; 
    } 
};

লক্ষ্য করুন যে আমি areAllItemsEnabled()অংশটি বাদ দিয়েছি ।


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

1
এর একটি পার্শ্ব প্রতিক্রিয়া রয়েছে যার ফলে তালিকাভিউ ডিভাইডার না দেখায়।
ম্যাকিয়েজ পিগলস্কি

11

আমাকে ছাড়া আর কিছুই সাহায্য করে না:

transparent_drawable.xml:

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>

layout.xml:

android:listSelector="@drawable/transparent_drawable"

7

কোডে

listView.setSelector(getResources().getDrawable(R.drawable.transparent));

এবং অঙ্কনযোগ্য ফোল্ডারে ছোট স্বচ্ছ চিত্র যুক্ত করুন।

পছন্দ: স্বচ্ছ.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>

5

আমার android:focusableInTouchMode="true"জন্য যাওয়ার পথ। android:listSelector="@android:color/transparent" কোন কাজে আসে না। নোট করুন যে আমি প্রতিটি সারিতে বেশ কয়েকটি অবজেক্টের সাথে একটি কাস্টম তালিকাভিউ ব্যবহার করছি।



5

বিকল্প হিসাবে:

listView.setSelector(android.R.color.transparent);

অথবা

listView.setSelector(new StateListDrawable());

1

এটি করার দ্রুত এবং সহজ উপায় রয়েছে: পদ্ধতিতে:

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    //TODO
    ((ListView)sender).SelectedItem = null;
}

আশা করি এটি সাহায্য করবে;)


এই সি # জাভা নয়
অ্যান্টনি

আমি মনে করি বেশিরভাগ অ্যান্ড্রয়েড প্রোগ্রামাররা এখনও জাভা ব্যবহার করছে কারণ এটিই অ্যান্ড্রয়েড স্টুডিও সমর্থন করে তবে সি # কারণ ব্যবহার করা যেতে পারে। আমি কেবল স্পষ্ট করে বলতে চাই যে এটি সি #: ডি
অ্যান্টনি

0

আপনি যদি একক তালিকা দর্শন আইটেমটির জন্য হাইলাইটটি অক্ষম করতে চান তবে ঘরটি সক্ষম করে রাখুন, সেই ঘরের জন্য হাইলাইটিং অক্ষম করতে পটভূমির রঙ সেট করুন।

উদাহরণস্বরূপ, আপনার ঘর বিন্যাসে, সেট করুন android:background="@color/white"


0

আপনি posযেটি পেয়ে onItemClick যাবেন তা পেয়ে যাবেন এবং করুন:

listView.setItemChecked(pos, false);

আমি জানি এটিই সেরা উপায়

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