这是错误:
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) 我在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) 我试图在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 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
我正在使用服务库中的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?
我想将标签文本(最多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
我是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
是否可以在另一个选项卡布局的选项卡中有一个选项卡布局?我创建了以下图像,以进行更好的说明。所需的滑动运动如图像中所述。
我的主要活动
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
如何禁用此点击效果?
我试图将这些添加到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) 我有一个TabLayoutwith,Recyclerview所以当点击标签时,Recyclerview它会滚动到一个特定的位置.我也想要相反的过程,以便当Recyclerview滚动到特定位置时,突出显示特定选项卡.
例如:如果其中有4个选项卡,TabLayout并且何时Recyclerview滚动到第5个位置(项目可见且位于下方TabLayout),则应突出显示第3个选项卡.
在下面显示TabLayout"如何工作"时,应突出显示"工作原理"选项卡.
java android android-layout android-recyclerview android-tablayout
android ×10
java ×2
android-tabs ×1
android-view ×1
slide ×1
slidingmenu ×1
textview ×1
visibility ×1