3

一緒に使うViewPagersのは初めてですFragments。私のアプリにはListView起動時があり、渡されたIDに基づいてユーザーを詳細ビューに表示します。私が遭遇している問題は、詳細ビューのレイアウトがリストビューとは異なることです。は最初のViewPager画面のレイアウト上にあるため、レイアウトを使用するとViewPager、最初のレイアウトが保持されます。これは基本的に下部のステータスバーであり、ユーザーが詳細ビューを表示すると消えます。

これは私がこれまでに持っているものです:

Main.xml(起動時の初期レイアウト、ステータスバー付き)

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
>
        <!-- Footer -->
        <TextView 
                android:id="@+id/status" 
                android:layout_width="match_parent" 
                android:layout_height="wrap_content" 
                android:layout_alignParentBottom="true"
        />
        <!-- Footer -->

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_above="@id/status
     />

 </RelativeLayout>

Main.class

public class Main extends SherlockFragmentActivity
{
    private static int NUMBER_OF_PAGES;  
    private ViewPager mViewPager;  
    private MyFragmentPagerAdapter mMyFragmentPagerAdapter; 
    private static List<Fragment> fragments;

    @Override
    public void onCreate(final Bundle icicle)
    {    
        super.onCreate(icicle);

        setContentView(R.layout.main);

        mViewPager = (ViewPager)findViewById(R.id.viewpager);  
        mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());  
        mViewPager.setAdapter(mMyFragmentPagerAdapter);

        NUMBER_OF_PAGES = 5;

        fragments = new ArrayList<Fragment>();

        fragments.add(new ListingFragment()); //initial screen that just a ListView

        fragments.add(DetailsFragment.newInstance(1));
        fragments.add(DetailsFragment.newInstance(2));
        fragments.add(DetailsFragment.newInstance(3));
        fragments.add(DetailsFragment.newInstance(4));
    }

    private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter  {            

        public MyFragmentPagerAdapter(FragmentManager fm) {  
             super(fm);  
        }

        @Override  
        public Fragment getItem(int index) {

            return fragments.get(index);
        }

        @Override  
        public int getCount() {  

             return NUMBER_OF_PAGES;  
        }
   }
}

Details.xml(ステータスバーのない詳細ビュー)

 <?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
        android:orientation="vertical"
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent" 
    >

        <ListView android:id="@android:id/list" 
            android:layout_width="wrap_content"  
            android:layout_height="fill_parent" 
        />

    </RelativeLayout>

DetailsFragment.class

public class DetailsFragment extends SherlockFragmentActivity
{
    private int detailId;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);         
    }

    @Override
    public void onActivityCreated(final Bundle icicle)
    {    
        super.onActivityCreated(icicle);
    }

    public static DetailsFragment newInstance(int id) {

        DetailsFragment lf = new DetailsFragment();
        Bundle bundle = new Bundle();
        bundle.putInt("id", id);
        lf.setArguments(bundle);
        return lf;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.details, container, false);

        detailId = getArguments().getInt("id");

        return view;
    }
}
4

1 に答える 1

0

ViewPager は最初の画面のレイアウト上にあるため、ViewPager を使用する場合、レイアウトは最初のレイアウトを保持します。これは基本的に下部にある単なるステータス バーであり、ユーザーが詳細ビューにいるときに消えるはずです。

次に、メイン レイアウト ファイルに配置しないでください。DetailsFragmentステータスが最初のフラグメントに関連付けられている場合、特にがそのステータスを表示する必要がない場合は、そのビューに属しますTextView

そのため、 main.xmlからステータス を削除し、 .xmlで使用されるレイアウト ファイルに追加します。extendsの場合、id( ) + statusを含む を含むレイアウト ファイルを作成し、このレイアウト ファイルを.TextViewListingFragmentListingFragmentListFragmentListViewandroid:id="@android:id/list"TextViewonCreateView

于 2013-01-19T08:41:49.833 に答える