Tôi đang làm việc trên Ứng dụng Android sử dụng biểu tượng Máy chủ tab được tải xuống từ internet và Kích thước biểu tượng là 30x30.Android tabHost và tabWidget icon issue
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);
}
Nếu tôi sử dụng mã này ở trên (biểu tượng từ tài nguyên) để đặt văn bản chỉ báo và biểu tượng, Biểu tượng hoạt động khá tốt và biểu tượng phù hợp với tiện ích tab.
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);
}
Nhưng Nếu tôi sử dụng mã này (hình ảnh tải về từ internet và nó trong bộ nhớ trong) thay vì trước đó, biểu tượng dường như quá nhỏ, và thậm chí cả chiều cao và giá trị chiều rộng là như nhau cho cả hai biểu tượng. Tôi không quy mô các biểu tượng khi tải xuống từ internet và tôi lưu chúng dưới dạng PNG. Bất cứ ai có bất kỳ ý tưởng về vấn đề là gì?
Here is the tabhost with icons from resources
Here is the tabhost with icons downloaded from internet
SOLUTION:
Thay vì thêm đối tượng để các máy chủ tab với mã trước đây của tôi, bây giờ tôi sử dụng mã dưới đây, và nó hoạt động khá tốt. Sự khác biệt giữa hai cái này là cái mới là sử dụng Bố cục có chế độ xem hình ảnh và chế độ xem văn bản để biểu thị biểu tượng và văn bản bên dưới để đặt chỉ báo về mục đích. Vì vậy, theo cách này, tôi có thể gọi phương thức từ chế độ xem hình ảnh để làm cho hình ảnh phù hợp với giới hạn của nó được xác định trong tệp xml. Đây là cách để thực hiện với Chế độ xem.
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);
}
Và đây là bố cục với chế độ xem hình ảnh và chế độ xem văn bản.
<?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>
Nhờ @Venky và @SpK đã cho tôi ý tưởng.
[Bạn nên thử ví dụ này] (http://stackoverflow.com/a/6992662/940096) Tôi luôn đề xuất ví dụ này cho tất cả. – Praveenkumar
http://stackoverflow.com/questions/5567532/android-ui-tabactivity-issue/5567823#5567823 .. Hãy thử bài đăng này – Venky
Cảm ơn câu trả lời của bạn khá hữu ích, tôi có thể sử dụng sau này. Nhưng những gì tôi muốn làm là thiết lập các biểu tượng thanh tab này với các biểu tượng mà tôi đã tải xuống từ internet và vì tôi không sử dụng drawable-mdpi hoặc drawable-ldpi trong tài nguyên mà chúng không phù hợp với tabbar theo độ phân giải màn hình. Thay vì sử dụng tài nguyên, tôi muốn sử dụng các biểu tượng trong bộ nhớ trong của mình. ví dụ với createDrawableFromPath(). – osayilgan