Высота узла вкладки в Android

#android

#Android

Вопрос:

     for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i  ) {

            Log.v("","tabhost...");
            Log.v("","tabHost.getTabWidget().getChildAt(i).getLayoutParams() "  tabHost.getTabWidget().getChildAt(i));
            RelativeLayout relativeLayout = (RelativeLayout)tabHost.getTabWidget().getChildAt(i);
            relativeLayout.getChildCount();
            Log.v("","count  " relativeLayout.getChildCount() "   relativeLayout.getChildAt(i) " relativeLayout.getChildAt(i));
            TextView tabhostText = (TextView) relativeLayout.getChildAt(1);

            tabhostText.setTextSize(20.0f);
            tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = 30;

        }
  

В приведенном выше коде все работает нормально, т. Е. я могу видеть текст на вкладке. Но я не могу видеть текст на устройстве. видна только некоторая часть текста. пожалуйста, не мог бы кто-нибудь найти какое-нибудь решение.

Заранее спасибо..

Ответ №1:

Я знаю, что вашему вопросу уже 10 месяцев, но причина, по которой видна только часть текста, заключается в том, что вы установили высоту всего 30. По умолчанию на вашем телефоне, вероятно, 96 пикселей (или, может быть, 64, если у вашего телефона более низкое разрешение).

Если вы хотите сделать свой код более универсальным, вы можете сначала получить высоту вкладок, а затем установить высоту каждой вкладки в процентах от исходной высоты. В приведенном ниже примере я установил высоту вкладок равной 80% от исходной высоты.:

     double height = tabHost.getTabWidget().getChildAt(0).getLayoutParams().height;

    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i  ) {

                RelativeLayout relativeLayout = (RelativeLayout)tabHost.getTabWidget().getChildAt(i);
                TextView tabhostText = (TextView) relativeLayout.getChildAt(1);

                tabhostText.setTextSize(20.0f);
                tabHost.getTabWidget().getChildAt(i).getLayoutParams().height =  (int) (0.8 * height);

            }
  

p.s. Возможно, в следующий раз вы захотите сформулировать свой вопрос лучше. Я думаю, что понимаю, о чем вы спрашиваете, но только потому, что я работаю над тем же самым. Попробуйте сформулировать свой вопрос в обычной форме вопроса (например, заканчивающийся вопросительным знаком).

Ответ №2:

Я нашел решение.

 View v = getLayoutInflater().inflate(R.layout.tab_header, null);
tabSpec.setIndicator(v);
  

Просто используйте пользовательский макет для вкладок.

Комментарии:

1. использование пользовательского макета — отличное решение, когда вам нужен высокий уровень настройки через tabhost. Я успешно использовал это для создания пользовательского макета для каждой вкладки. Затем вы можете получить доступ к дочерним элементам управления с помощью v.findViewById()