标签: android-tablayout

如何在屏幕底部设置android TabLayout?

我的问题是如何将新的android材质设计TabLayout设置在屏幕的底部,有点像Instagram的底部工具栏.

如果您从未见过Instagram的UI,请点击它的截图:

如果您从未见过Instagram的UI,那么就是它的截图.如果有更好的方法来解决这个问题,请随时在此处发布(如果可能的话,请附上代码示例),我将非常感激.

这是我的代码:activity_main.xml

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <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/ThemeOverlay.AppCompat.Light" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
Run Code Online (Sandbox Code Playgroud)

我已经尝试过Stack Overflow社区建议的许多方法和解决方法,但似乎没有一个可以在android中使用这个新的选项卡实现.我知道这个UI设计不符合Android设计指南,所以请不要评论它.这个UI设计对我的应用程序的用户体验至关重要,我希望得到答案.谢谢!

android android-layout android-tablayout

25
推荐指数
2
解决办法
4万
查看次数

使用工具栏+ TabLayout充气AppBarLayout

我目前在main.xml中有一个DrawerLayout.有一个工具栏包装在AppBarLayout中,然后是一个简单的LinearLayout来交换片段.

我导航到的一个片段,我希望它包含一个用于ViewPager片段的TabLayout.目前,我在片段的布局文件中都有这两个,但这会导致工具栏和TabLayout之间出现阴影,这是我不想要的.我也不想使用setElevation(),因为它不适用于pre-Lollipop设备.

一个可能的解决方案是从我的片段中膨胀AppBarLayout,以便它同时包含工具栏+标签.但是,我不确定如何做到这一点,所以任何帮助将不胜感激.

这是我的main.xml文件:

<android.support.v4.widget.DrawerLayout 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/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.lumivote.lumivote.ui.MainActivity">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/rootLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

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

        <LinearLayout
            android:id="@+id/flContent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

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

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/nav_header"
        app:itemIconTint="#333"
        app:itemTextColor="#333"
        app:menu="@menu/navigation_drawer_items" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

这是我的片段的xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.alexdao.democracy.ui.candidate_tab.CandidateListFragment">

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/myPrimaryColor"
        app:tabMode="fixed"
        app:tabGravity="fill"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-toolbar android-tablayout

24
推荐指数
3
解决办法
9665
查看次数

24
推荐指数
5
解决办法
2万
查看次数

标签更改监听器android

我的HomeActivity扩展了使用2个选项卡的AppCompatActivity.

public class HomeActivity extends AppCompatActivity {

    private SectionsPagerAdapter mSectionsPagerAdapter;
    private TabLayout tabLayout;
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        ...
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);
    }

    ...
Run Code Online (Sandbox Code Playgroud)

如何收听标签更改事件?如果我需要添加更多代码以便清楚,请告诉我.

android android-fragments android-tablayout

24
推荐指数
4
解决办法
2万
查看次数

android.support.design.widget.TabLayout以编程方式选择Tab

我使用的是android.support.design.widget.TabLayout.它有两个选项卡,如果用户选择第二个选项卡在特定条件下,我希望用户重定向到第一个选项卡,并禁止他转到sencond选项卡,直到条件匹配.为了实现这一点,我试过,

tabLayout.getTabAt(0).select(); 
Run Code Online (Sandbox Code Playgroud)

但它没有重新选择第一个标签

android android-tablayout

23
推荐指数
1
解决办法
3万
查看次数

Android Studio无法解析符号'TabLayout'

无法解析符号TabLayout?如何清除此错误?请帮我.我已经导入了import android.support.design.widget.TabLayout;

android importerror android-fragments android-studio android-tablayout

23
推荐指数
3
解决办法
3万
查看次数

Android ViewPager和TabLayout运行速度不快

有嵌套片段TabLayoutViewPager.每个片段里面都有listview,所以他们可以一起调用,现在我遇到了app处理速度慢的问题.我尝试过一些像凌空图书馆这样的解决方案,但它对我不起作用.更多我发布我的代码所以请指导我做到最好.

MainTabFragment.java

public class MainTabFragment extends Fragment {

public static int position_child_tab = 0, three_childs_tab_position = 0;
static int count = -1;
int position_tab = 0;
Bundle args;
MyTabLayout myTabLayout;

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

/**
 * Use this factory method to create a new instance of
 * this fragment using the provided parameters.
 *
 * @param param1 Parameter 1.
 * @param param2 Parameter 2.
 * @return A new instance of fragment …
Run Code Online (Sandbox Code Playgroud)

performance android android-fragments android-viewpager android-tablayout

23
推荐指数
2
解决办法
5854
查看次数

滚动选项卡中的片段时隐藏/显示工具栏

我添加了新的Toolbar,TablayoutViewpager在我的Android应用程序中.我为我的3个标签提供了碎片,它的工作正常.但问题是,当我向上滚动我的工具栏时,不会隐藏.我希望当我滚动我的片段时它应该隐藏.还有一件事,我在片段中使用Webview.我的代码如下.

MainActivity.Java

public class MainActivity extends AppCompatActivity {
    TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

        setupToolbar();
        setupTablayout();
    }

private void setupToolbar() {
    // TODO Auto-generated method stub
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarsdfs);
    if (toolbar != null) {
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);}
}

private void setupTablayout() {
    // TODO Auto-generated method stub
    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
    tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter
            (getSupportFragmentManager(), …
Run Code Online (Sandbox Code Playgroud)

android toolbar webview android-fragments android-tablayout

22
推荐指数
2
解决办法
3万
查看次数

在com.android.support:design:23.1.0中更改左侧,顶部,右侧或底部的TabLayout图标

我对Android开发很新.所以忍受我.

我一直在尝试将com.android.support:design:23.1.0中的图标和文本对齐一天.

显然,在com.android.support:design:23.1.0他们已经改变了默认的图标位置,顶部和文字在底部.

以前在com.android.support:design:23.0.1默认在同一行图标左边和文本图标

所以这里有一个简单的方法来解决它(虽然它可能有缺点,idk tbh):

change the version in your app's build.gradle. ex: 23.1.0 to 23.0.1 and build.
Run Code Online (Sandbox Code Playgroud)

还有一种更好的方法(这样你也可以在左,右,上,下对齐图标):

  1. res/layout中创建custom_tab.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAlignment="center"/>
Run Code Online (Sandbox Code Playgroud)

2.在你的活动java中

TextView newTab = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
newTab.setText("tab1"); //tab label txt
newTab.setCompoundDrawablesWithIntrinsicBounds(your_drawable_icon_here, 0, 0, 0);
tabLayout.getTabAt(tab_index_here_).setCustomView(newTab);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经实现了使图标显示在任何一侧,如下所示:

TabLayout图标

PS:setCompoundDrawablesWithIntrinsicBounds函数参数是4个侧面图标,如下所示:

setCompoundDrawablesWithIntrinsicBounds(leftDrawable, topDrawable, rightDrawable, bottomDrawable)
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-support-design android-tablayout

22
推荐指数
2
解决办法
1万
查看次数

在片段中使用TabLayout; 标签文字不可见

我目前正在尝试新的Android支持设计库中的各种新组件.我NavigationView在my中实现了一个MainActivity.java,它使用FragmentManager在Navigation抽屉中的项目之间导航:

getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content, mTabLayoutFragment)
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
    .commit();
Run Code Online (Sandbox Code Playgroud)

TabLayout在其中一个片段中使用了一个.这是片段的布局:

<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

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

</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

它背后的Java代码:

import android.os.Bundle;
import android.support.design.widget.*;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class TabLayoutFragment extends Fragment {   


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View inflatedView = inflater.inflate(R.layout.fragment_tablayout, container, false);

        TabLayout tabLayout = (TabLayout) …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-support-design android-tablayout

21
推荐指数
3
解决办法
3万
查看次数