2

こんにちは、whatsappのようなレイアウトを作成する必要がありました。これは、アクションバーをスクロールしますが、tabLayoutはスクロールしません。私はそれの中の断片的な断片のためにビューページャーを使用しました。 フラグメントiではリストビューが追加されましたが、リストビューではそのアクションバーがスクロールしません。 いくつかのチュートリアルをstackoverflowで使用すると、この目的のためにnestedScrollViewを使用する必要があり、それは私のために機能します。 しかし、リストビューのスクロールを停止します。 私はこのコードを使用しました。リストビューはNestedScrollView内のビューページャーを使用してフラグメント内でスクロールしません

activity_my.xml

<?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" 
android:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="200dp" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"></android.support.design.widget.CollapsingToolbarLayout> 

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

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_gravity="bottom" 
    app:layout_anchor="@+id/appbar" 
    app:layout_anchorGravity="bottom" 
    app:layout_collapseMode="none"> 

    <ImageView 
     android:id="@+id/tabBg" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/primary" 
     android:scaleType="fitXY" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_gravity="bottom" 
     android:background="#00000000" 
     app:layout_anchor="@+id/appbar" 
     app:layout_anchorGravity="bottom" 
     app:layout_collapseMode="none" 
     app:tabGravity="fill" 
     app:tabIndicatorColor="#fff" 
     app:tabIndicatorHeight="2dp" 
     app:tabMode="scrollable" 
     app:tabSelectedTextColor="#fff" 
     app:tabTextColor="#fff" /> 

</FrameLayout> 
<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="?attr/actionBarSize" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="1000dp" 
     android:orientation="vertical"> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"/> 
    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

<!--<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="?attr/actionBarSize" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />--> 
</android.support.design.widget.CoordinatorLayout> 

MyActivity.java

public class MyActivity extends AppCompatActivity { 
private TabLayout tabLayout; 
private ViewPager viewPager; 
ArrayList<Fragment> fragmentArrayList; 
TabAdapter tabAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    /*Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(false);*/ 

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

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

private void setupViewPager(ViewPager viewPager) { 
    TabAdapter adapter = new TabAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OneFragment(), "ONE"); 
    adapter.addFragment(new OneFragment(), "TWO"); 
    adapter.addFragment(new OneFragment(), "THREE"); 
    viewPager.setAdapter(adapter); 
    } 

} 

FragmentOne.java

public class OneFragment extends Fragment { 
ListView listTest; 
ArrayList<String> itemList; 
ArrayAdapter<String> adapter; 

public OneFragment() { 
    // Required empty public constructor 
} 

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_one, container, false); 
    listTest = (ListView) view.findViewById(R.id.listTest); 
    itemList = new ArrayList<>(); 
    for (int i = 0; i < 50; i++) { 
     itemList.add("Item : " + i); 
    } 
    adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, itemList); 
    listTest.setAdapter(adapter); 
    return view; 
    } 
} 

fragment_one.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ListView 
     android:id="@+id/listTest" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></ListView> 
</RelativeLayout> 

nestedScrollViewでandroid:fillViewPort = "true"を使用し、LinearLayoutからminHeightを削除すると、listviewは表示されますがスクロールされないため、LinearLayout monHeight = 1000dpを使用しました。 これはスクロールしますが、1000dpまでは他の項目は表示されません。

+0

は、同様に... –

+0

のrecyclerviewを使用しよう..! – Rushvi

答えて

10

観察可能scrollviewを使用することができますが、これは必要ありません。

ので、変更、

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="?attr/actionBarSize" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="1000dp" 
     android:orientation="vertical"> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"/> 
    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

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

、と今、あなたはAppBarLayoutとの良好な作業をされていない、ListViewを取っているので、私はあなたの代わりにRecyclerViewを使用することをお勧め。

注:あなたはまだあなたがNestedScrollView下でそれをwraping NonScrollListviewを使用することができますListView使用したい場合。

NonScrollListView

public class NonScrollListView extends ListView { 

    public NonScrollListView(Context context) { 
     super(context); 
    } 

    public NonScrollListView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public NonScrollListView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom); 
     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } 
} 

そして、ちょうどこのliskeあなたfragment_oneを変更。

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <packagename.NonScrollListView 
     android:id="@+id/listTest" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></packagename.NonScrollListView> 
</android.support.v4.widget.NestedScrollView> 

これがあなたを助けてくれることを願っています。 コーディングハッピー..

+0

こんにちはその素晴らしい...................たくさんのおかげで.... – Rushvi

+0

あなたが歓迎..もしあなたがそれを受け入れることができます;) –

+0

うまくできた。すばらしいです。 –

-1

あなたはすべてのオーケー最初のあなたはNestedScrollViewViewPagerを反っRefer the link

+0

あなたがこれをコメントすべきである代わりに、私はそれを使用それはまた私のために働いていないリストビュー –

関連する問題