TabHost / TabWidget - Масштабировать фоновое изображение?

Мне нужно масштабировать фоновые изображения TabWidget, чтобы они сохраняли соотношение сторон.
Я использую TabHost с TabWidget. Затем я использую setBackgroundDrawable для установки изображений.

Я нашел здесь подробный ответ - Фон в виджете вкладок игнорирует масштабирование . Однако я не уверен, куда добавить новый код Drawable. (Работая с примером HelloTabWidget, ни один из моих модулей не использует RelativeLayout, и я не вижу никакого макета для «tabcontent».)

Я также нашел эту ветку - Android: масштабировать Drawable или фоновое изображение? . В соответствии с этим, это звучит так, как будто мне пришлось бы предварительно масштабировать свои изображения, что сводит на нет цель сделать их масштабируемыми.

Я также нашел еще один поток, в котором кто-то создал подкласс класса Drawable, чтобы он либо не масштабировался, либо он будет правильно масштабироваться. Я не могу его сейчас найти, но это похоже на то, что нужно пройти МНОГОЕ, когда вы должны просто иметь возможность сделать что-то простое, например mTab.setScaleType (centerInside).

Вот мой код:

main.xml:


 
    
            
    
    

основное действие:

        tabHost.setOnTabChangedListener(new OnTabChangeListener() { 
            TabHost changedTabHost = getTabHost();
            TabWidget changedTabWidget = getTabWidget();
            View changedView = changedTabHost.getTabWidget().getChildAt(0);

            public void onTabChanged(String tabId) { 
                int selectedTab = changedTabHost.getCurrentTab();
                TabWidget tw = getTabWidget();

                if(selectedTab == 0) {
                    //setTitle("Missions Timeline");
                    View tempView = tabHost.getTabWidget().getChildAt(0);
                    tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_timeline_on));
                    tempView = tabHost.getTabWidget().getChildAt(1);
                    tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_map_off));
                    tempView = tabHost.getTabWidget().getChildAt(2);
                    tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_search_off));
                    tempView = tabHost.getTabWidget().getChildAt(3);
                    tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_news_off));
                    tempView = tabHost.getTabWidget().getChildAt(4);
                    tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_license_off));
                            //ImageView iv = (ImageView)tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon); 
                            //iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_timeline_on)); 
                            //iv = (ImageView)tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon); 
                            //iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_off)); 
                    } else if (selectedTab == 1) {
                        //setTitle("Spinoffs Around You");
                        View tempView = tabHost.getTabWidget().getChildAt(0);
                        tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_timeline_off));
                        tempView = tabHost.getTabWidget().getChildAt(1);
                        tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_map_on));
                        tempView = tabHost.getTabWidget().getChildAt(2);
                        tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_search_off));
                        tempView = tabHost.getTabWidget().getChildAt(3);
                        tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_news_off));
                        tempView = tabHost.getTabWidget().getChildAt(4);
                        tempView.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_license_off));
}

Я также пробовал изображения 9patch, но они оказались слишком маленькими.

Итак, что лучше всего сделать?

7
задан Community 23 May 2017 в 11:47
поделиться