标签: android-tablayout

当我将材质 TabLayout 与项目一起使用时,Android layout.xml UI 消失了

这是错误:

java.lang.NullPointerException: Cannot invoke "android.content.res.BridgeTypedArray.setTheme(android.content.res.Resources$Theme)" because "ta" is null
    at android.content.res.Resources_Theme_Delegate.obtainStyledAttributes(Resources_Theme_Delegate.java:74)
    at android.content.res.Resources$Theme.obtainStyledAttributes(Resources.java:1631)
    at android.content.Context.obtainStyledAttributes(Context.java:874)
    at android.widget.TextView.setTextAppearance(TextView.java:3965)
    at androidx.appcompat.widget.AppCompatTextView.setTextAppearance(AppCompatTextView.java:216)
    at com.google.android.material.textview.MaterialTextView.setTextAppearance(MaterialTextView.java:106)
    at android.widget.TextView.setTextAppearance(TextView.java:3954)
    at androidx.core.widget.TextViewCompat.setTextAppearance(TextViewCompat.java:289)
    at com.google.android.material.tabs.TabLayout$TabView.updateTab(TabLayout.java:2772)
    at com.google.android.material.tabs.TabLayout$TabView.update(TabLayout.java:2801)
    at com.google.android.material.tabs.TabLayout$TabView.setTab(TabLayout.java:2713)
    at com.google.android.material.tabs.TabLayout.createTabView(TabLayout.java:1673)
    at com.google.android.material.tabs.TabLayout.newTab(TabLayout.java:956)
    at com.google.android.material.tabs.TabLayout.addTabFromItemView(TabLayout.java:824)
    at com.google.android.material.tabs.TabLayout.addViewInternal(TabLayout.java:1730)
    at com.google.android.material.tabs.TabLayout.addView(TabLayout.java:1720)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1131)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1101)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1130)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1101)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:505)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:353)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:450)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:122)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:727)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$9(RenderTask.java:884)
    at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$3.run(RenderExecutor.kt:195)
    at com.android.tools.idea.rendering.RenderExecutor$PriorityRunnable.run(RenderExecutor.kt:293)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown …
Run Code Online (Sandbox Code Playgroud)

user-interface android android-tablayout

5
推荐指数
1
解决办法
517
查看次数

当可见性从GONE变为VISIBLE时,TabLayout文本消失

我在Android中的TabLayout有问题.我正在使用AppCompat库,因为我的min SDK是10.问题是如果TabLayout在首次创建活动时具有GONE可见性,那么当我将可见性设置为VISIBLE之后,选项卡报告和选项卡指示符将丢失.

这是我的MainActivity:

public class MainActivity extends AppCompatActivity {

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

    /**
     * Called when we press the button.
     */
    public void openTabActivity(View view) {
        Intent intent = new Intent(this, TabActivity.class);
        startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

TabActivity是这样的:

public class TabActivity extends FragmentActivity {

    MyPagerAdapter mMyPagerAdapter;
    ViewPager mViewPager;
    TabLayout mTabLayout;

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

        // ViewPager and its adapters use support library
        // fragments, so use getSupportFragmentManager.
        mMyPagerAdapter =
                new MyPagerAdapter(
                        getSupportFragmentManager()); …
Run Code Online (Sandbox Code Playgroud)

android visibility android-tablayout

4
推荐指数
1
解决办法
1760
查看次数

具有自定义textview的Tablayout在首次启动时未更改选定的状态颜色

我试图在tablayout的自定义textview中找出一些荒谬的东西.当我启动应用程序时,第一个选项卡的textview是默认颜色,但是当我浏览其他选项卡并返回到第一个选项卡时,它可以正常工作.这是代码.

selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true"
            android:color="#FFFFFF"/> <!-- selected -->
        <item android:color="@color/red_highlight"/> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

 tabLayout = (TabLayout) findViewById(R.id.tabs);
 tabLayout.setupWithViewPager(viewPager);
 tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
 tabLayout.getTabAt(0).setCustomView(R.layout.tab_custom_view);
 tabLayout.getTabAt(1).setCustomView(R.layout.tab_custom_view);
 tabLayout.getTabAt(2).setCustomView(R.layout.tab_custom_view);
Run Code Online (Sandbox Code Playgroud)

tab_custom_view.xml

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tab_tittle"
        android:text="Tab1"
        android:textStyle="bold"
        android:textColor="@color/selector"/>
Run Code Online (Sandbox Code Playgroud)

启动应用程序时,第一个选项卡是默认颜色.单击其他选项卡并返回到第一个选项卡后,它将处于选定的颜色.但是应该如何,当我启动应用程序时,第一个选项卡被选中,并且应该是选定的颜色.

android textview android-layout android-tablayout

4
推荐指数
1
解决办法
4466
查看次数

带有ViewPager和TabLayout的导航抽屉:碎片未正确加载

我制作了一个示例项目,其中包含带滑动标签的导航抽屉.我使用了android studio中的ViewPager,TabLayout和NavigationDrawer模板.

问题是,有时片段视图是可见的,但是一旦我选择了不同的抽屉项目,视图对应于该片段变得不可见,当我向后滑动标签时,它变得可见.我使用了'com.android.support:design:22.2.0'支持库

这是详细的代码:

swipe_tab.xml文件

    <?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"
           />

        <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>
Run Code Online (Sandbox Code Playgroud)

fragment_page.xml文件

        <?xml version="1.0" encoding="utf-8"?>
        <TextView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center" />
Run Code Online (Sandbox Code Playgroud)

ViewPagerFragment.java

        public class ViewPagerFragment extends Fragment {

            @Nullable
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

                View view=inflater.inflate(R.layout.swipe_tabs,container,false);
                ViewPager viewPager = (ViewPager)view. findViewById(R.id.viewpager);
                viewPager.setAdapter(new SampleFragmentPagerAdapter(getFragmentManager(),getActivity()));

                // Give the TabLayout the ViewPager
                TabLayout tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
                tabLayout.setupWithViewPager(viewPager);
                return view; …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager navigation-drawer android-tablayout

4
推荐指数
1
解决办法
3095
查看次数

在Android支持TabLayout上添加OnLongClickListener TabLayout.Tab

我正在使用服务库中的TabLayout.我在长按一个选项卡时尝试添加OnLongClickListener.对我来说这是不可能的.我甚至试图通过使用childViews来"破解"它:

View tabLayoutChild = tabLayout.getChildAt(0);
    ViewGroup group = (ViewGroup) tabLayoutChild;
    group.getChildAt(0).setOnLongClickListener(this);
Run Code Online (Sandbox Code Playgroud)

不起作用,看起来不漂亮.除了我想实现的longClick之外,它都非常方便.

我的一小段代码

pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager());
    pagerView.setAdapter(pagerAdapter);
    tabLayout.setupWithViewPager(pagerView);
Run Code Online (Sandbox Code Playgroud)

tablayout有一个方法,setOnLongClickListener()但我可以告诉它,它什么都不做.

如何为tablayout中的选项卡实现LongClickListener?

android onlongclicklistener android-tabs android-tablayout

4
推荐指数
1
解决办法
1536
查看次数

Android设计支持库:TabLayout标签文本为单行

我想将标签文本(最多8个字符)放在一行中

在此输入图像描述

我为TabLayout元素添加了自定义样式

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item>
</style>
<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="android:maxLines">1</item>
    <item name="android:singleLine">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

仍然没有成功.我也试过了

 <android.support.design.widget.TabLayout
  app:tabTextAppearance="@style/MyCustomTabTextAppearance"
  ..
  ..
  />
Run Code Online (Sandbox Code Playgroud)

android android-layout android-view android-viewpager android-tablayout

4
推荐指数
1
解决办法
6838
查看次数

在滑动菜单片段中无法解析符号'TabLayout'

我是android编程的新手,我正在尝试制作一个订购应用程序.我已成功创建了滑动菜单及其片段和两个不同项目中的选项卡布局.现在这就是困境,当我在片段活动中添加选项卡布局的代码时,会发生错误.它表示不使用选项卡布局导入或无法解析符号'TabLayout'.

这是我片段的布局文件:

slider_fragment2.xml

<RelativeLayout
android:id="@+id/main_layout"
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

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

<android.support.design.widget.TabLayout
    android:id="@+id/tab_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/toolbar"
    android:background="#E06908"
    android:elevation="6dp"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_below="@id/tab_layout"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这里是片段java文件: Slider_Fragment2.java

package com.example.aldoreymedrano.slider.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.support.design.widget.TabLayout;
import com.example.aldoreymedrano.slider.R;
import com.example.aldoreymedrano.slider.menu_tab_adapter.PagerAdapter;

public class Slider_Fragment2 extends AppCompatActivity


public Slider_Fragment2() {
    // Required empty public constructor
} …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments slidingmenu android-tablayout

4
推荐指数
1
解决办法
8081
查看次数

安卓 在另一个标签布局的标签内的标签布局

是否可以在另一个选项卡布局的选项卡中有一个选项卡布局?我创建了以下图像,以进行更好的说明。所需的滑动运动如图像中所述。

在此处输入图片说明

我的主要活动

Xml

<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/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

        <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"  />

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

public class MainActivity extends AppCompatActivity {

    private TabLayout tabLayout;

    private final static int[] tabIcons = {
            R.drawable.ic_tab_1,
            R.drawable.ic_tab_2,
            R.drawable.ic_tab_3,
            R.drawable.ic_tab_4
    };

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

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

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

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

    private …
Run Code Online (Sandbox Code Playgroud)

android slide android-fragments android-viewpager android-tablayout

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

如何禁用TabLayout上的点击效果?

如何禁用此点击效果?

在此输入图像描述

我试图将这些添加到Activity的主题但不起作用

<item name="tabIndicatorColor">@android:color/transparent</item>
<item name="tabBackground">@android:color/transparent</item>
<item name="tabTextAppearance">@android:color/transparent</item>
<item name="tabSelectedTextColor">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)

我也尝试直接在TabLayout中使用主题,但应用程序将崩溃

并尝试过android:stateListAnimator,但仍然无法正常工作

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    style="@style/AppTheme"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stateListAnimator="@null">
Run Code Online (Sandbox Code Playgroud)

android android-tablayout

4
推荐指数
3
解决办法
3159
查看次数

如何将TabLayout与Recyclerview同步?

我有一个TabLayoutwith,Recyclerview所以当点击标签时,Recyclerview它会滚动到一个特定的位置.我也想要相反的过程,以便当Recyclerview滚动到特定位置时,突出显示特定选项卡.

例如:如果其中有4个选项卡,TabLayout并且何时Recyclerview滚动到第5个位置(项目可见且位于下方TabLayout),则应突出显示第3个选项卡.在此输入图像描述

在下面显示TabLayout"如何工作"时,应突出显示"工作原理"选项卡.

java android android-layout android-recyclerview android-tablayout

4
推荐指数
1
解决办法
2489
查看次数