由于在所做的项目中的图片资源都是从网上抠的,所以造成了,在TabWidget中图片过大,从而覆盖掉了里面的文字,最开始的效果如图
在网上众多的搜索结果中,网上大部分将的都是有关怎么更改字体的大小及颜色的问题,代码如下
设置tabHost 中的tabs的字体颜色、大小等;
TabWidget tabWidget=this.getTabWidget();
for (int i = 0; i < tabWidget.getChildCount(); i++) {
TextView tv=(TextView)tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setGravity(BIND_AUTO_CREATE);
tv.setPadding(10, 10,10, 10);
tv.setTextSize(16);//设置字体的大小;
tv.setTextColor(Color.WHITE);//设置字体的颜色;
//获取tabs图片;
ImageView iv=(ImageView)tabWidget.getChildAt(i).findViewById(android.R.id.icon);
}
根据上面的例子我们估计会采用两种方式来解决的问题
1、
for (int i = 0; i < tabWidget.getChildCount(); i++) {
//获取tabs图片;
ImageView iv=(ImageView)tabWidget.getChildAt(i).findViewById(android.R.id.icon);
iv.setMaxHeight(30);
iv.setMaxWidth(30);
}
这样我们发现还是没有一点效果
2、
for (int i = 0; i < tabWidget.getChildCount(); i++) {
//获取tabs图片;
ImageView iv=(ImageView)tabWidget.getChildAt(i).findViewById(android.R.id.icon);
iv.setLayoutParams(new LayoutParams(width, height));
}
但这种情况的话,程序会出错,这是为什么呢,因为在new LayoutParams(width, height)的时候一定要用父控件的LayoutParams,而我们在导包的时候并没有发现有适合的
在组织导入的时候,所有的结果如图
发现无论到那个都会出错
,3、
所以我们必须寻求另外一种方法
for(int i=0;i < tabs.getChildCount();i++)
{
TextView textView = (TextView)tabs.getChildAt(i).findViewById(android.R.id.title);
textView.setTextSize(14);
textView.setPadding(0, 3, 0, 0);
ImageView image = (ImageView)tabs.getChildAt(i).findViewById(android.R.id.icon);
image.getLayoutParams().height = 30;//通过给它的属性赋值的方法可以解决问题
image.getLayoutParams().width = 30;
}
结果如图所示
完成最初设定的目标