选项卡高度在Android设备中未正确显示

时间:2011-01-27 15:22:34

标签: android

我实现了tablayout但它在模拟器中无法正常工作。设备中的高度显示不正确。谁能告诉我这是什么问题?

这是我的布局文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

 <TabHost 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:background="@color/black"
        > 
   <RelativeLayout    
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"> 
         <FrameLayout android:id="@android:id/tabcontent" 
             android:layout_width="fill_parent"  
             android:layout_height="wrap_content" 
             android:layout_alignParentTop="true"  
             android:layout_above="@android:id/tabs" /> 
    <TabWidget android:id="@android:id/tabs" 
             android:layout_width="fill_parent"  
             android:layout_height="wrap_content" 
              android:layout_alignParentBottom="true"
                       /> 
          </RelativeLayout> 
    </TabHost>
    </LinearLayout>

这是我的java代码设置高度和宽度

for (int i =0; i<tabWidget.getChildCount(); i++) {
         //tabWidget.getChildAt(i).setBackgroundColor(R.color.black);
          tabWidget.getChildAt(i).getLayoutParams().height = height;
   tabWidget.getChildAt(i).getLayoutParams().width = width;
   RelativeLayout relLayout = (RelativeLayout)tabWidget.getChildAt(i); 
   TextView tv = (TextView)relLayout.getChildAt(1); 
   tv.setTextSize(10.0f);
   tv.setTypeface(myTypeface1);
}

有人能告诉我如何设置标签栏的高度和宽度吗?提供示例代码

由于

1 个答案:

答案 0 :(得分:1)

这可能与仿真器和设备之间的屏幕密度差异有关。查看DisplayMetrics - 您需要获取当前设备的密度,如下所示:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float density = metrics.density;

接下来,根据Android dev site上与密度无关的像素部分计算必要的高度和宽度缩放系数:

float scaling_factor = density / 160;

最后,适当地设置小部件的高度和宽度:

tabWidget.getChildAt(i).getLayoutParams().height = int ( height * scaling_factor );
tabWidget.getChildAt(i).getLayoutParams().width = int ( width * scaling_factor );