在清单中设置minSdkVersion和targetSdkVersion会导致某些图形比平常小

时间:2011-12-12 14:48:45

标签: android tabs

我将minSdkVersion设置为8,将targetSdkVersion设置为8,除了一件事,一切似乎都没问题。我的标签栏(自定义标签栏)图形缩小到大小的一半。应用程序中的所有其他图形看起来都很好。值得注意的是,标签栏图形是我在应用程序启动时以编程方式调整的唯一图形。这是我的setUpTabs()方法的一个片段:

public void setUpTabs()
{
    //Tab setup
    TabHost mTabHost = getTabHost();

    ListView pastTripsListView=(ListView)findViewById(R.id.pastTrips);
    //ListView settingsListView=(ListView)findViewById(R.id.settings);
    ListView upcomingTripsListView=(ListView)findViewById(R.id.upcomingTrips);

    pastTripsListView.setAdapter(pastTripsAdapter);
    pastTripsListView.setOnItemClickListener(pastTripsAdapter);

    upcomingTripsListView.setAdapter(upcomingTripsAdapter);
    upcomingTripsListView.setOnItemClickListener(upcomingTripsAdapter);

    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("").setContent(R.id.pastTrips));
    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("").setContent(R.id.settings));
    mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("").setContent(R.id.upcomingTrips));

    mTabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 49;
    mTabHost.getTabWidget().getChildAt(1).getLayoutParams().height = 49;
    mTabHost.getTabWidget().getChildAt(2).getLayoutParams().height = 49;

    RelativeLayout tabLayoutLeft = (RelativeLayout) mTabHost.getTabWidget().getChildAt(0);
    tabLayoutLeft.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_indicator_left));

    RelativeLayout tabLayoutCenter = (RelativeLayout) mTabHost.getTabWidget().getChildAt(1);
    tabLayoutCenter.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_indicator_center));

    RelativeLayout tabLayoutRight = (RelativeLayout) mTabHost.getTabWidget().getChildAt(2);
    tabLayoutRight.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_indicator_right));

    mTabHost.setCurrentTab(2);
    //End Tab setup
}

现在,49我设置的高度是以像素为单位还是倾斜???这可能是导致问题的原因吗?我可以在xml文件中设置这些选项卡吗?

当我将鼠标悬停在“身高”这个词上时,智能感知告诉我以下内容:

有关视图有多高的信息。可以是常量FILL_PARENT之一(由API级别8中的MATCH_PARENT替换)或WRAP_CONTENT。或确切的大小。

当我尝试MATCH_PARENT时,它表示无法解决。我在哪里可以得到这个?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我不这样做你应该这样做:

mTabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 49;

期待它坚持下去。 AFAIK你应该这样做:

RelativeLayout.LayoutParams lp =  mTabHost.getTabWidget().getChildAt(0).getLayoutParams();
lp.height = 49;
mTabHost.getTabWidget().getChildAt(0).setLayoutParams(lp);

此外,您将高度设置为固定像素。如果您希望窗口小部件在多个屏幕分辨率下保持相同的高度,则应始终使用dip。从倾角到像素的转换很容易:

final float scale = getResources().getDisplayMetrics().density;
int pixels =  49 * scale + 0.5;