2017-02-20 1 views
0

Bild für das TabLayout, das ich erreichen wollte. TabLayout oder horizontales scrollview Android

Kann mir jemand den Weg zeigen, dies zu erreichen?

Mein Code:

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

    <android.support.design.widget.TabLayout 
     android:id="@+id/sliding_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="scrollable" 
     app:tabGravity="center"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" 
     android:background="@android:color/white" /> 

</LinearLayout> 

Ich habe bereits die Attribute app:tabMode="scrollable" und app:tabGravity="center" aber alle Registerkarten auf der linken Seite bleiben nur im Layout.

Ich möchte das Ergebnis wie das obige Bild erreichen, egal wie viele Tabs sind. Bedeutet, dass die Position der Tabs in der Mitte oder der Tablayout weg ist.

PageFragment.java:

package com.example.testing; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 


// In this case, the fragment displays simple text based on the page 
public class PageFragment extends Fragment { 
    public static final String ARG_PAGE = "ARG_PAGE"; 

    private int mPage; 

    public static PageFragment newInstance(int page) { 
     Bundle args = new Bundle(); 
     args.putInt(ARG_PAGE, page); 
     PageFragment fragment = new PageFragment(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mPage = getArguments().getInt(ARG_PAGE); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_page, container, false); 
     TextView textView = (TextView) view; 
     textView.setText("Fragment #" + mPage); 
     return view; 
    } 


} 

SampleFragmentPagerAdapter.java:

package com.example.testing; 

import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 



public class SampleFragmentPagerAdapter extends FragmentPagerAdapter { 
    final int PAGE_COUNT = 3; 
    private String tabTitles[] = new String[] { "Tab1", "Tab2", "Tab3" }; 
    private Context context; 

    public SampleFragmentPagerAdapter(FragmentManager fm, Context context) { 
     super(fm); 
     this.context = context; 
    } 

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

    @Override 
    public Fragment getItem(int position) { 
     return PageFragment.newInstance(position + 1); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     // Generate title based on item position 
     return tabTitles[position]; 
    } 
} 

TabActivity.java:

package com.example.testing; 

import android.support.design.widget.TabLayout; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class TabAcitivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_tab_layout); 

     // Get the ViewPager and set it's PagerAdapter so that it can display items 
     ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
     viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager(),TabAcitivity.this)); 

     // Give the TabLayout the ViewPager 
     TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 
} 

enter image description here

Die Laschen beginnen fr Von links. Wie platziere ich es, damit es in der Mitte beginnt? Oder ist es besser, eine horizontal scrollbare ListView zu verwenden?

+0

Können Sie Ihren Java-Code posten? –

+0

@SachinSaxena Bitte überprüfen Sie die Codes –

+0

überprüfen Sie bitte nach dem Entfernen App: tabGravity = "Center" aus dem Layout. Ich denke, es sollte funktionieren. –

Antwort

1

verwenden diese für das Scrollen Tabs:

sliding_tabs.setTabMode(TabLayout.MODE_SCROLLABLE); 

Für alle anderen Bezugs bitte einen Blick auf die folgende URL haben. https://guides.codepath.com/android/google-play-style-tabs-using-tablayout

+0

Ich möchte, dass meine Tabs in der Mitte des Layouts beginnen. Wenn Sie das tun möchten, setzt das TabLayout einen Rand oder Padding? –