カスタムタブウィジェットを使用してタブを表示しています。最初にプログラムを実行すると、タブがうまく機能します。すべてが美しく見えます。しかし、プログラムをリロードすると、logcatによると、onResume()メソッドがTab Widgetで呼び出され、TabWidgetはウィジェットの上半分のみを表示します。ここに私のTabWidgetのXMLがあります。タブウィジェットが正しく表示されないonResume()
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@android:id/tabs"/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</TabHost>
ここはかなりバニラのものです。 layout_heightを変更しても効果はありません。
私は現在、TabWidget.javaでonResumeを実装していません。とにかくコードをヒアリングします。
public class TabWidget extends TabActivity {
private TabHost mTabHost;
private void setupTabHost() {
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.tabs);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); // The
// activity
// TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
setupTabHost();
// mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
// Dealer tab
Intent intentDealer = new Intent().setClass(this, DealerActivity.class);
int iconDealer = (R.drawable.ic_tab_dealer);
setupTab("Dealer", intentDealer, iconDealer);
// Department tab
Intent intentDept = new Intent().setClass(this, DeptActivity.class);
int iconDept = R.drawable.ic_tab_dept;
setupTab("Departments", intentDept, iconDept);
// PostBoard Activity
Intent intentBoard = new Intent().setClass(this, BoardActivity.class);
int iconBoard = R.drawable.ic_tab_board;
setupTab("Postboard", intentBoard, iconBoard);
// Social Network connection
// Check first to see if there are Social Network links if not don't
// show tab.
if (Startup.msMain.locations[Startup.nChosenLocation].social_media_feeds.length == 0) {
} else {
Intent intentSocial = new Intent().setClass(this,
SocialActivity.class);
int iconSocial = R.drawable.ic_tab_social;
setupTab("Social Media", intentSocial, iconSocial);
}
// Links Activity
Intent intentLinks = new Intent().setClass(this, LinksActivity.class);
int iconLinks = R.drawable.ic_tab_link;
setupTab("Links", intentLinks, iconLinks);
// set startup tab
tabHost.setCurrentTab(0);
}
private void setupTab(final String tag, Intent intent, int img) {
View tabview = createTabView(mTabHost.getContext(), tag, img);
TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview)
.setContent(intent);
mTabHost.addTab(setContent);
}
private static View createTabView(final Context context, final String text,
int img) {
View view = LayoutInflater.from(context)
.inflate(R.layout.tabs_bg, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(text);
ImageView icon = (ImageView) view.findViewById(R.id.tabsIcon);
icon.setBackgroundDrawable(context.getResources().getDrawable(img));
return view;
}
}
エラーが表示された場合は、ここをクリックしてください。
12-28 10:10:00.963: I/ActivityManager(1305): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.zocalolabs.demo/.SplashScreen } from pid 1470
12-28 10:10:01.034: W/InputManagerService(1305): Starting input on non-focused client [email protected] (uid=10001 pid=1470)
12-28 10:10:01.073: I/ActivityManager(1305): Resumed Activity: com.zocalolabs.demo/.TabWidget totalTime: 110 ms
再びのonCreateメソッドにそれを強制するための活動を殺す)(onResume()またはonPauseに再描画するために私のウィジェットの活動を強制的にフルにそれを強制する方法はありますか?あるいは、この問題を攻撃する別の方法がありますか?どんな洞察にも感謝します!
私は自分の質問に答えるためのポイントを得ていないと思われますが、犯人は実際には – Rymnel
でした。あなた自身の問題への答えを見つけたら、あなた自身の質問に答えて、正解としてそれについて恥ずかしくないでください!そうすれば、誰かがあなたの質問/回答を助けてくれたら、彼らは投票して、あなたに信用を与えることができます。 http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions – Aurora
ありがとうございます。私は先に進んで答えに移した。 – Rymnel