Установка minSdkVersion и targetSdkVersion в манифесте приводит к тому, что некоторые графики становятся меньше, чем обычно - PullRequest
0 голосов
/ 12 декабря 2011

Я установил для 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 вместо

Также, когда я нахожу слово «высота», intellisense говорит мне следующее:

Информация о том, какого роста хочет быть вид. Может быть одной из констант FILL_PARENT (заменена на MATCH_PARENT на уровне API 8) или WRAP_CONTENT. или точный размер.

Когда я пытаюсь использовать MATCH_PARENT, он говорит, что это не может быть решено. Где я могу получить это?

Большое спасибо.

1 Ответ

1 голос
/ 12 декабря 2011

Я не это, вы должны сделать это:

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, если хотите, чтобы ваш виджет оставался одинаковой высоты при нескольких разрешениях экрана. Преобразование из dip в пиксели легко:

final float scale = getResources().getDisplayMetrics().density;
int pixels =  49 * scale + 0.5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...