Новичок: Как изменить размер шрифта вкладки? - PullRequest
4 голосов
/ 30 июня 2011

Я слежу за тем, как Android разрабатывает учебник макета вкладок, чтобы реализовать простую раскладку вкладок.

Исходя из этого урока, у меня возник вопрос, как изменить размер шрифта вкладки ??

Я пытался изменить размер шрифта вкладки, добавив атрибут android:textSize="8dip"в <TabWidget ...> макета xml file:

<TabWidget
    android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:textSize="8dip" 
/>

, но это не дает никакого эффекта.

Любой может предоставить правильный способ изменить размер шрифтана вкладке?

Ответы [ 4 ]

11 голосов
/ 30 июня 2011

Здесь вы используете табачную таблицу

Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = (TabHost) getTabHost(); // The activity TabHost

TabHost.TabSpec spec; // Resusable TabSpec for each tab
Typeface localTypeface1 = Typeface.createFromAsset(getAssets(),
        "fonts/arial.ttf");

Редактирование начинается

tabHost.getTabWidget().setBackgroundDrawable( getResources().getDrawable(R.drawable.bluenavbar));

Редактирование концов

TextView txtTab = new TextView(this);
txtTab.setText(getString(R.string.top_news));
txtTab.setPadding(8, 9, 8, 9);
txtTab.setTextColor(Color.WHITE);
txtTab.setTextSize(14);
txtTab.setTypeface(localTypeface1);
txtTab.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
txtTab.setBackgroundResource(R.drawable.tab_news);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("topNews").setIndicator(txtTab).setContent(new Intent(this, TopNewsGroup.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
tabHost.addTab(spec);

Теперь вы сможете изменить цвет , размер и шрифт текста

5 голосов
/ 30 июня 2011

если вы хотите этого добиться, вы должны надуть макет вкладки.

    tabHost = getTabHost(); // The activity TabHost
    tabHost.setOnTabChangedListener(this);
    Resources res = getResources(); // Resource object to get Drawables
    tabHost = getTabHost(); // The activity TabHost
    TabHost.TabSpec spec; // Reusable TabSpec for each tab

    TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
    TabSpec secondTabSpec = tabHost.newTabSpec("tid2");
    TabSpec thirdTabSpec = tabHost.newTabSpec("tid3");
    TabSpec fourthTabSpec = tabHost.newTabSpec("tid4");
    TabSpec fifthTabSpec = tabHost.newTabSpec("tid5");

    viewCache[0] = LayoutInflater.from(this).inflate(R.layout.tabs1, null);
    viewCache[1] = LayoutInflater.from(this).inflate(R.layout.tabs1, null);
    viewCache[2] = LayoutInflater.from(this).inflate(R.layout.tabs1, null);
    viewCache[3] = LayoutInflater.from(this).inflate(R.layout.tabs1, null);
    viewCache[4] = LayoutInflater.from(this).inflate(R.layout.tabs1, null);

    firstTabSpec.setIndicator(viewCache[0]);
    secondTabSpec.setIndicator(viewCache[1]);
    thirdTabSpec.setIndicator(viewCache[2]);
    fourthTabSpec.setIndicator(viewCache[3]);
    fifthTabSpec.setIndicator(viewCache[4]);

    firstTabSpec.setContent(new Intent(this, HomeTabActivityGroup.class));
    secondTabSpec
            .setContent(new Intent(this, ProfileTabActivityGroup.class));
    thirdTabSpec.setContent(new Intent(this,
            NotificationTabActivityGroup.class));
    fourthTabSpec.setContent(new Intent(this,
            FavoritesTabActivityGroup.class));
    fifthTabSpec
            .setContent(new Intent(this, MoreTabActivityGroupNew.class));

    tabHost.addTab(firstTabSpec);
    tabHost.addTab(secondTabSpec);
    tabHost.addTab(thirdTabSpec);
    tabHost.addTab(fourthTabSpec);
    tabHost.addTab(fifthTabSpec);

    currentTabvalue = tabHost.getCurrentTab();
    C2DMessaging.register(TennisAppActivity.mContext,
            "racquetester@gmail.com");
    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {

        // tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#7392B5"));
        switch (i) {
        case 0:
            tabHost.getTabWidget().getChildAt(i)
                    .setBackgroundResource(R.drawable.home);
            break;
        case 1:
            tabHost.getTabWidget().getChildAt(i)
                    .setBackgroundResource(R.drawable.profile);
            break;
        case 2:
            tabHost.getTabWidget().getChildAt(i)
                    .setBackgroundResource(R.drawable.notifications);
            break;
        case 3:
            tabHost.getTabWidget().getChildAt(i)
                    .setBackgroundResource(R.drawable.fav);
            break;
        case 4:
            tabHost.getTabWidget().getChildAt(i)
                    .setBackgroundResource(R.drawable.more);
            break;
        }
    }

// **************************************

Это tab1.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/LinearLayout01" 
 android:layout_width="wrap_content" android:layout_height="wrap_content"
  xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="center">
 <ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content"  android:layout_height="50dip"></ImageView>
   </LinearLayout>

Вы должны поместить тестовый просмотр вместо изображения и установить свойство размера текста для вас.Я надеюсь, что это помощь.

1 голос
/ 14 июля 2011

Вот мои 2 цента, и это работает для меня ...

Добавьте это сначала внутри своего создания

TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab
    MyView view = null;

, а затем внутри вашего при создании используйте это для каждой вкладки ...

intent = new Intent().setClass(this, BrownieTab.class);
    view = new MyView(this, R.drawable.ic_tab_brownie_2, R.drawable.ic_tab_brownie_2, "Yourself");
    view.setBackgroundDrawable(this.getResources().getDrawable(R.layout.selecttabbackground));
    spec = tabHost.newTabSpec("inprogress").setIndicator(view).setContent(intent);
    tabHost.addTab(spec);

Наконец, вот MyView ...

private class MyView extends LinearLayout {
    ImageView iv;
    TextView tv;

    public MyView(Context c, int drawable, int drawableselec, String label) {
        super(c);
        iv = new ImageView(c);
        StateListDrawable listDrawable = new StateListDrawable();
        listDrawable.addState(SELECTED_STATE_SET, this.getResources()
                .getDrawable(drawableselec));
        listDrawable.addState(ENABLED_STATE_SET, this.getResources()
                .getDrawable(drawable));
        iv.setImageDrawable(listDrawable);
        iv.setBackgroundColor(Color.TRANSPARENT);
        iv.setLayoutParams(new LayoutParams(48, 48, (float) 0.0));
        setGravity(Gravity.CENTER);
        tv = new TextView(c);
        tv.setText(label);
        tv.setGravity(Gravity.CENTER);
        tv.setBackgroundColor(Color.TRANSPARENT);
        tv.setTextColor(Color.BLACK);
        tv.setTextSize(12);

        tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT, (float) 1.0));
        setOrientation(LinearLayout.VERTICAL);
        addView(iv);
        addView(tv);
        setBackgroundDrawable(this.getResources().getDrawable(
                R.layout.selecttabbackground));
    }
}   

Вы можете изменить все атрибуты вкладок в моем представлении и изменить текст и фон в методах oncreate.

0 голосов
/ 30 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...