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