2011-01-27 2 views
0

Я реализовал tablayout, но он не работает должным образом в эмуляторе. Высота не отображается должным образом в устройстве. Может ли кто-нибудь сказать мне, в чем проблема?Высота вкладки не подходит должным образом в устройстве Android

это мой файл макета

<?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); 
} 

Может кто-нибудь сказать мне, как установить высоту и ширину панели вкладок? Дайте образец кода

Благодарности

+0

Почему вы настройку ширину от кода? – Janusz

ответ

1

Это, вероятно, связано с различием в плотности экрана между эмулятором и устройством. Проверьте DisplayMetrics - вам нужно получить плотность тока устройства следующим образом:

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

Далее, рассчитать необходимую высоту и ширину коэффициент масштабирования в соответствии с разделом по плотности независимых пикселей на Android dev site:

float scaling_factor = плотность/160;

Наконец, установите высоту вашего виджета и ширину соответственно:

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