带有动态高度的Listview,在滚动视图中,带有viewview的tabview

时间:2016-08-22 09:22:23

标签: android

我有一个带有scrollview和TabView的活动。我使用ViewPager和tabview来添加片段。在每个片段中都有一个ListView,它将动态保存一些数据。所以我想在添加数据时动态增加ListView的高度。

现在,scrollview有一些问题,因为它只在特定空间内滚动。

    <ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:fillViewport="true"
    android:nestedScrollingEnabled="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"  >


    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:descendantFocusability="blocksDescendants">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">



        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:background="#5b5f62"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/MyCustomTabLayout"
            app:tabMode="fixed"
            app:tabGravity="fill"/>


            <LinearLayout
            android:id="@+id/frameone"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_below="@id/tabs">


            <ViewPager
                android:id="@+id/viewpager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

        </LinearLayout>


     <Button
            android:layout_below="@id/frameone"
            android:layout_width="150dp"
            android:layout_centerHorizontal="true"
            android:layout_height="50dp"
            android:layout_marginTop="40dp"
            android:text="Delete all"
            android:background="@drawable/button_bg_stroke"
            android:layout_marginLeft="80dp"
            android:layout_marginRight="80dp"

            />



</ScrollView>   

这是我的 MainActivity.class

public class MainActivity extends ActionBarActivity {

private TabLayout tabLayout;
private ViewPager viewPager;
private Button speedtest,resetall;

private int[] tabIcons = {
        R.drawable.one,
        R.drawable.two
};


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

    getSupportActionBar().hide();

    setContentView(R.layout.activity_main);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);


      tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            ((WrapViewPager)viewPager).reMeasureCurrentPage(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

     setupTabIcons();

}

private void setupTabIcons() {
    tabLayout.getTabAt(0).setIcon(tabIcons[0]);
    tabLayout.getTabAt(1).setIcon(tabIcons[1]);
}


private void setupViewPager(ViewPager viewPager) {

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new FragmentOne(), "ONE");
    adapter.addFragment(new FragmentTwo(), "TWO");
    viewPager.setAdapter(adapter);


}   


   class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }


}    

请检查一下。

https://postimg.org/image/648tyk0v9/

这个

https://postimg.org/image/m72y8czfv/

0 个答案:

没有答案