2

このようなものを作りたい

|ボタン|

アイテム1

アイテム2

アイテム3

。。。リストビューのアイテム

私はすでに3つのタブを持つタブホストを持っているので、ボタンはすべてのタブに表示されるため、main.xmlを変更したくありません!最初のタブにカレンダーを表示したい(これは完了しました。問題ないかどうかはわかりませんが、完了しました)。2番目のタブには別の何かが表示され、最後のタブにはボタンとその下のアイテムリストが表示されます。

私が行ったことはすべてAndroidチュートリアルからのものであるため、コードを貼り付けません。そのため、誰かにすでに書かれたコードを教えてもらいたくありません。何を読まなければならないか、どこで達成するかをガイドするためです。それ!

前もって感謝します!

さて、これは私がこれまでにやったことですこれは私のメインクラスです

`public class HourPayActivity extends TabActivity {public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); setContentView(R.layout.main);

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

    // Create an Intent to launch an //setContentView(R.layout.emptab); Activity for the tab (to be reused)
    intent = new Intent().setClass(this, MonthsActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("Months").setIndicator("",
                      res.getDrawable(R.drawable.ic_tab_months))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, EmployersActivity.class);
    spec = tabHost.newTabSpec("Employers").setIndicator("",
                      res.getDrawable(R.drawable.ic_tab_employers))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, PaymentsActivity.class);
    spec = tabHost.newTabSpec("Payments").setIndicator("",
                      res.getDrawable(R.drawable.ic_tab_payments))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
}

} `

そして、これは私が表示したいタブコンテンツです

public class EmployersActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    ListView employersList = getListView();

    String[] employers = getResources().getStringArray(R.array.employers_list);
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, employers));
    employersList.setAdapter(getListAdapter());       

    employersList.setTextFilterEnabled(true);



    employersList.setOnItemClickListener(new OnItemClickListener() {
        //@Override
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_LONG).show();
        }
    });

    setContentView(employersList);

}
4

1 に答える 1

0

あなたがしていることは; 私が正しく覚えていれば、TabActivityを拡張するクラスを作成するように指示するAndroidチュートリアルに従います。

このアクティビティでは、を介してインテントをロードします

TabHost.TabSpec spec = tabHost.newTabSpec([title]);
....
Intent content = new Intent(this, activityToLoad.class);
spec.setContent(content);
tabHost.addTab(spec);

これは、タブにアクティビティをロードします。つまり、通常のようにアクティビティを使用でき、setContentView(R.layout.yourlayout);でカスタムレイアウトを使用できます。onCreate()メソッドで。コンポーネントを呼び出したり、カスタムリストアダプタをリストにアタッチしたりすることができます。3つのタブに対して、3つの異なるアクティビティを作成します。個人的な知識に基づいて、タブを維持する最も簡単な方法です。

これらのレイアウトに何を入れるかはあなた次第です。ただし、タブに配置するアクティビティは、(おそらく)よく知っているような「通常の」アクティビティです。

あなたの見解を説明するには:

 <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
    <Button 
     android:id="@+id/btnId"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="@string/yourtext"
     />
    <ListView 
    android:id="@android:id/android:list"
    android:layout_height="fill_content" 
    android:layout_width="match_parent"
    />
</LinearLayout>

これにより、上部にボタンが配置され、その下にリストビューが表示されます。リストビューのIDはandroid:listです。これは、私のアクティビティでlistActivityを拡張し、そのIDのリストビューを期待しているためです。

于 2012-05-21T06:40:59.497 に答える