मैं एक एंड्रॉइड एप्लिकेशन पर काम कर रहा हूं जो इंटरनेट से डाउनलोड किए गए टैब होस्ट आइकन का उपयोग करता है और आइकन आकार 30x30 है।एंड्रॉइड टैबहोस्ट और टैबविजेट आइकन समस्या
for(int i = 0; i < titleNames.size(); i++)
{
intent = new Intent().setClass(context, Gallery.class);
sp = tabHost.newTabSpec(titleNames.get(i)).setIndicator(titleNames.get(i), res.getDrawable(R.drawable.icon)).setContent(intent);
tabHost.addTab(sp);
}
अगर मैं ऊपर (संसाधनों से आइकन) इस कोड का उपयोग सूचक पाठ और चिह्न सेट करने के लिए, यह काफी अच्छी तरह से काम करता है और आइकन टैब विजेट के लिए फिट बैठता है।
for(int i = 0; i < titleNames.size(); i++)
{
intent = new Intent().setClass(context, Gallery.class);
sp = tabHost.newTabSpec(titleNames.get(i)).setIndicator(titleNames.get(i), Drawable.createFromPath(path+iconNames.get(i))).setContent(intent);
tabHost.addTab(sp);
}
लेकिन अगर मैं इस कोड (छवि इंटरनेट से डाउनलोड किया और आंतरिक स्मृति में अपनी) के बजाय पिछले एक का उपयोग करें, माउस इतना छोटा लगता है, और यहां तक कि ऊंचाई और चौड़ाई मूल्यों दोनों आइकन के लिए ही हैं। मैं उन्हें इंटरनेट से डाउनलोड करते समय आइकन स्केल नहीं करता हूं और मैं उन्हें पीएनजी के रूप में सहेजता हूं। किसी को भी कोई समस्या है कि समस्या क्या है?
Here is the tabhost with icons from resources
Here is the tabhost with icons downloaded from internet
समाधान:
इसके बजाय अपने पिछले कोड के साथ टैब की मेजबानी के लिए वस्तुओं को जोड़ने का, अब मैं नीचे दिए गए कोड का उपयोग, और यह बहुत अच्छी तरह से काम करता है। इन दोनों के बीच का अंतर नया है एक लेआउट का उपयोग कर रहा है जिसमें इरादे के संकेतक को सेट करने के लिए आइकन और पाठ को इंगित करने के लिए छवि दृश्य और टेक्स्ट व्यू है। तो इस तरह से मैं छवि दृश्य से विधि को कॉल करने में सक्षम हूं ताकि छवि को अपनी सीमाओं में फिट किया जा सके जो xml फ़ाइल में परिभाषित किया गया है। यहां व्यू के साथ ऐसा करने का तरीका है।
private void addTab(String labelId, Drawable drawable, Class<?> c) {
tabHost = getTabHost();
intent = new Intent(this, c);
spec = tabHost.newTabSpec("tab" + labelId);
View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
TextView title = (TextView) tabIndicator.findViewById(R.id.title);
title.setText(labelId);
ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
icon.setImageDrawable(drawable);
icon.setScaleType(ImageView.ScaleType.FIT_CENTER);
spec.setIndicator(tabIndicator);
spec.setContent(intent);
tabHost.addTab(spec);
}
और यहां छवि दृश्य और टेक्स्ट व्यू के साथ लेआउट है।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="55dip"
android:layout_weight="1"
android:orientation="vertical"
android:padding="5dp"
android:weightSum="55" >
<ImageView
android:id="@+id/icon"
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@drawable/icon"
android:adjustViewBounds="false"
android:layout_weight="30"
/>
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="25"
android:gravity="center_horizontal"
/>
</LinearLayout>
मुझे एक विचार देने के लिए @ वेन्की और @ एसपीके के लिए धन्यवाद।
[आप इस उदाहरण को बेहतर तरीके से आजमाएं] (http://stackoverflow.com/a/6992662/940096) मैं हमेशा इस उदाहरण को सभी को सुझाव देता हूं। – Praveenkumar
http://stackoverflow.com/questions/5567532/android-ui-tabactivity-issue/5567823#5567823 .. इस पोस्ट को आजमाएं – Venky
आपके उत्तरों के लिए धन्यवाद, वे काफी मददगार हैं, मैं इसे बाद में उपयोग कर सकता हूं। लेकिन मैं जो करना चाहता हूं वह इन टैब बार आइकनों को उन आइकनों के साथ सेट कर रहा है जिन्हें मैंने इंटरनेट से डाउनलोड किया था, और चूंकि मैं उन संसाधनों में drawable-mdpi या drawable-ldpi का उपयोग नहीं करता, वे स्क्रीन रिज़ॉल्यूशन के अनुसार ठीक से टैबबार के लिए उपयुक्त नहीं हैं। संसाधनों का उपयोग करने के बजाय मैं अपनी आंतरिक मेमोरी में आइकन का उपयोग करना चाहता हूं। उदाहरण के लिए createDrawableFromPath() के साथ। – osayilgan