4

У меня есть вкладка с тремя фрагментами ListView, но ListView появляется вырезанным из buttom. Вы никогда не видите последний элемент.В Tabbed Activity с ViewPager, ListView появляется снизу снизу

screenshoot

Я попробовал все, но я не в состоянии решить эту проблему.

Это Вкладка активность:

public class TabbedActivity extends AppCompatActivity { 

    private SectionsPagerAdapter mSectionsPagerAdapter; 
    private ViewPager mViewPager; 
    private String query_id; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_tabbed); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

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

     query_id = getIntent().getStringExtra("query_id"); 
     String title = getIntent().getStringExtra("title"); 
     setTitle(title); 
    } 

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

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

     @Override 
     public int getCount() { 
      return 3; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        return AFragment.newInstance(0, "A", query_id); 
       case 1: 
        return BFragment.newInstance(1, "B", query_id); 
       case 2: 
        return CFragment.newInstance(2, "C", query_id); 
      } 
      return null; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return "A"; 
       case 1: 
        return "B"; 
       case 2: 
        return "C"; 
      } 
      return null; 
     } 
    } 
} 

Это вкладки активность Компоновка:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.domain.app.TabbedActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/appbar_padding_top" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 
     </android.support.v7.widget.Toolbar> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

</android.support.design.widget.CoordinatorLayout> 

Внутри ViewPager я загружал ListView Layout:

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

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

</LinearLayout> 

Спасибо всем!

+0

использование рециркуляционного вида вместо –

+0

Похоже, что вы не устанавливая 'supportActionBar' в' Toolbar' вы используете в 'xml', пожалуйста показать, делаете вы это или нет? –

+0

@MustansarSaeed да, я использую его: 'setContentView (R.layout.activity_tabbed); Панель инструментов панели инструментов = (Панель инструментов) findViewById (R.id.Панель инструментов); setSupportActionBar (панель инструментов); ' – guillemp

ответ

7

Может быть, этот дизайн поможет в том, что вам нужно добавить:

<LinearLayout 
      android:id="@+id/test" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 
</LinearLayout> 

Сейчас:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:fitsSystemWindows="true" 
    tools:context="com.domain.app.TabbedActivity"> 

    <LinearLayout 
     android:id="@+id/test" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="0dp" 
      android:theme="@style/AppTheme.AppBarOverlay"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|enterAlways" 
       app:popupTheme="@style/AppTheme.PopupOverlay"> 
      </android.support.v7.widget.Toolbar> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 

     </android.support.design.widget.AppBarLayout> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    </LinearLayout> 
</android.support.design.widget.CoordinatorLayout> 

introducir la descripción de la imagen aquí

Notas: Это было удален android:paddingTop="@dimen/appbar_padding_top", чтобы сделать тест s.

+1

Спасибо @ angel-angel, это работает для меня! – guillemp

+1

Спасибо @Angel :) Я искал решение из многих дней :) – sha

0

Похоже, что это нормально, как вы можете видеть в этом ответе:

https://stackoverflow.com/a/30675037/4409113

Это должно быть исправлено с добавлением:

app:layout_behavior="@string/appbar_scrolling_view_behavior"

к вашему ViewPager, которые у вас уже есть ,

Вы никогда не видите последний элемент.

Возможно, вам придется использовать это внутри NestedScrollView.

Похожий вопрос: Android Tabbed Activity Bottom off Screen

1

С ListView в Android 5.0> вы можете достичь своих потребностей с помощью CoordinatorLayout вместо LinearLayout и добавить android:nestedScrollingEnabled="true" внутри ListView. Ваш окончательный макет должен выглядеть следующим образом.

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

<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:nestedScrollingEnabled="true" 
    > 
</ListView> 
<android.support.design.widget.CoordinatorLayout/> 

Для более старых устройств использовать RecyclerView вместо ListView

Смежные вопросы