0

ViewPagerIndicator を使用して、1 つのアクティビティでさまざまなページを表示しています。ページごとにメニューボタンを押して、別のメニューを表示させることはできますか?たとえば、ページ 1 には「追加」と「削除」のメニュー項目が表示され、ページ 2 には「編集」と「設定」が表示されますか? これらはばかげた例ですが、アクティビティがインスタンス化されたときにメニューが作成されるように見えるため、メニューボタンを押すとメニューが既に作成されているため、現在表示されているページに関係なく同じメニュー項目が表示されます。ViewPagerIndicator でページを変更するときに onCreateOptionsMenu() をトリガーすることは可能ですか?

4

2 に答える 2

1

以下のメソッドを使用する必要がありますActivity

この onPrepareOptionsMenu(Menu menu) をオーバーライドします

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
     //In this you can Change Menu from different xml  
   // MenuItem item = menu.findItem(R.id.refresh);
   // if (item != null) {
    // item.setVisible (shouldIShowThisItem)
   // }
//May be you can set Visibility to set for Item to show or Hide

      menu.clear();
    if(menu_one){
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.game_menu, menu);
    }else{
        MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.my_menu, menu);
    }

    return super.onPrepareOptionsMenu(menu);

}

このメソッドでは、ユーザーが android.as のメニュー ボタンを押したときに表示するメニューをデバイス化できます。ViewPagerIndicator を使用しましswitchif and else if

于 2012-04-05T06:30:45.617 に答える
0

私は同様の例を行いました。私にとっては、ページインジケーター(ページ数を示す)が必要でした。たとえば、メニューに円の画像が表示される4ページがある場合です。私が 3 ページ目にいるとき、3 ページ目は黄色になります。同じことができますが、必要なボタンを追加するだけです。

簡単な例を次に示します。 // 最初にメイン アクティビティ

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.ViewPager;

public class AwesomePagerActivity extends Activity {

    private ViewPager awesomePager;
    private static int NUM_AWESOME_VIEWS = 4;
    private Context cxt;
    private Pager awesomeAdapter;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cxt = this;

        awesomeAdapter = new Pager(NUM_AWESOME_VIEWS);
        awesomeAdapter.setContext(cxt);
        awesomeAdapter.setListeImages(liste_images);
        awesomePager = (ViewPager) findViewById(R.id.awesomepager);
        awesomePager.setAdapter(awesomeAdapter);
    }

    private Integer[] liste_images = {
            R.drawable.tuto_step01, R.drawable.tuto_step02,
            R.drawable.tuto_step03, R.drawable.tuto_step04};


}

ページャー アダプターよりも:

import android.content.Context;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class Pager extends PagerAdapter{

    private static int NUM_AWESOME_VIEWS;
    private Context cxt;
    Integer[] liste_images;

    public Pager(int i){
        NUM_AWESOME_VIEWS = i;
    }
    public void setContext(Context cxt){
        this.cxt=cxt;

    }

    public void setListeImages(Integer[] liste_images){
        this.liste_images=liste_images;
    }

    @Override
    public void destroyItem(View collection, int position, Object view) {
        ((ViewPager) collection).removeView((View) view);
    }

    @Override
    public void finishUpdate(View arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return NUM_AWESOME_VIEWS;
    }

    @Override
    public Object instantiateItem(View collection, int position) {

        LayoutInflater  inflater = (LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View layout = inflater.inflate(R.layout.layout_pager_ind, null);

        ImageView tv = (ImageView) layout.findViewById(R.id.pager);

        tv.setImageResource(liste_images[position]);

        LinearLayout mPagesController = (LinearLayout) layout.findViewById(R.id.pages_controller);

        int count = getCount();

        for (int i = 0; i < count; i++)
        {
            if (i == position)
            {
                ((ImageView) mPagesController.getChildAt(i)).setImageResource(R.drawable.btn_vflipper_pressed);
            }
            else
            {
                ((ImageView) mPagesController.getChildAt(i)).setImageResource(R.drawable.btn_vflipper_normal);
            }
        }



        ((ViewPager) collection).addView(layout,0);

        return layout;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==((View)object);
    }

    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public Parcelable saveState() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void startUpdate(View arg0) {
        // TODO Auto-generated method stub

    }

}

layout_pager_indicator.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center" >

<ImageView
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/pager"/>

 <LinearLayout
        android:id="@+id/pages_controller"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/btn_vflipper_pressed">
        </ImageView>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/btn_vflipper_normal">
        </ImageView>   
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/btn_vflipper_normal">
        </ImageView>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/btn_vflipper_normal">
        </ImageView>    
    </LinearLayout> 


</LinearLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<android.support.v4.view.ViewPager
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/awesomepager"/>


</LinearLayout>

プロジェクト AwesomePagerIndicator をダウンロードして、私が行ったように変更を追加できます。幸運を :)

于 2012-04-05T06:15:49.947 に答える