0

アプリケーションにタブ ウィジェットがありますが、各タブの間にスペースがありません。これを実現するために、タブをクリックすると呼び出されるこの関数を追加しました

public void setTabColor(TabHost tabhost) {

    _widget = getTabWidget();

    for (int i = 0; i < _widget.getChildCount(); i++) {
        _widget.getChildAt(i).setBackgroundDrawable(getResources().getDrawable(R.drawable.tabs));
        final TextView tv = (TextView) _widget.getChildAt(i).findViewById(android.R.id.title);
        tv.setTextColor(Color.BLACK);
        LinearLayout.LayoutParams currentLayout =
                (LinearLayout.LayoutParams) _widget.getChildAt(i).getLayoutParams();
        currentLayout.setMargins(0, 5, 5, 0);

    }

    //Selected Tab
    final TextView tv = (TextView) _widget.getChildAt(tabhost.getCurrentTab()).findViewById(android.R.id.title);
    tv.setTextColor(Color.WHITE);

    _widget.requestLayout();

}

次に、アクティビティの onCreate() の最後で setTabColor() 関数を呼び出して、開始時にタブ間にスペースが入るようにします。ただし、onCreate() から呼び出された場合、スペースは表示されませんが、SetTabColor() 関数を呼び出すタブを初めてクリックしたときに表示されます。

誰でも助けることができますか?

ありがとう!

編集: 要求に応じて、setTabColor を呼び出す onCreate() を次に示します。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.friendhome_activity);


    int id = getIntent().getIntExtra("friendID", 0);
    _friend = FriendList.getInstance().GetFriendById(id);

    final TabHost tabs = getTabHost();
    tabs.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
        @Override
        public void onTabChanged(String s) {
            setTabColor(tabs);
        }
    });

    _widget = getTabWidget();

    //Friend Overview
    Intent overviewIntent = new Intent(this, OverviewActivity.class);
    overviewIntent.putExtra("friendID", id);
    TabHost.TabSpec overview = tabs.newTabSpec("Overview").setIndicator("Overview").setContent(overviewIntent);

    //Messages
    Intent messagesIntent = new Intent(this, MessagesActivity.class);
    messagesIntent.putExtra("friendID", id);
    TabHost.TabSpec messages = tabs.newTabSpec("Messages").setIndicator("Messages ( 0 )").setContent(messagesIntent);

    //photos

    Intent photosIntent = new Intent(this, PhotosActivity.class);
    String tabStr = "Photos " + "( " + _friend.getImageAdapter().getImages().size() + " )";
    photosIntent.putExtra("friendID", id);
    TabHost.TabSpec photos = tabs.newTabSpec("Photos").setIndicator(tabStr).setContent(photosIntent);


    //Videos
    Intent videoIntent = new Intent(this, VideosActivity.class);
    videoIntent.putExtra("friendID", id);
    TabHost.TabSpec videos = tabs.newTabSpec("Videos").setIndicator("Videos ( 0 )").setContent(videoIntent);

    tabs.addTab(overview);
    tabs.addTab(messages);
    tabs.addTab(photos);
    tabs.addTab(videos);

    setTabColor(tabs);

}
4

0 に答える 0