我正在尝试在使用TabLayout时删除选项卡下面的阴影,TabLayout是在普通布局中定义的(而不是作为工具栏或操作栏的一部分).
将主题设置为
<item name="android:windowContentOverlay">@null<item/>
Run Code Online (Sandbox Code Playgroud)
要么
<item name="windowContentOverlay">@null<item/>
Run Code Online (Sandbox Code Playgroud)
没用.
此外,将高程设置为0也没有帮助.
<android.support.design.widget.TabLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@android:color/white"
app:backgroundTint="@android:color/transparent"
app:tabIndicatorColor="@android:color/transparent"
app:tabMode="scrollable"/>
Run Code Online (Sandbox Code Playgroud) 我有一个主要活动,它承载一个片段,该片段反过来托管一个TabLayout(带有一个ViewPager).显示标签栏,但标签本身未显示.
这是我在显示主机片段的主要活动中的代码:
Fragment fragment = new BMITabsFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(Constants.BMI_TABS_FRAGMENT).commit();
Run Code Online (Sandbox Code Playgroud)
这是我托管TabLayout的片段,它是BMITabsFragment(sa):
public class BMITabsFragment extends Fragment {
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Get the ViewPager and set it's PagerAdapter so that it can display items
ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
viewPager.setAdapter(new BMIFragmentPagerAdapter(getActivity().getSupportFragmentManager(),
getActivity()));
// Give the TabLayout the ViewPager
TabLayout …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-tablayout
我正在使用嵌套的ArrayList for Tablayout.ArrayList的每个元素都会填充每个Tab.标签计数根据父级arraylist的大小而变化.例如,当父ArrayList的大小为2时,选项卡数为2; 当大小3标签计数3..etc..为了解释这种情况很困难,我准备了expalantion图像..
图片1
此图像代表一般外观.我想用ArrayLists为每个元素填充这个TextViews
图2
此图像代表我的数据类型; 键和值ArrayList是嵌套的arraylist,它们在每个索引中包含arraylist.
图3 - 图像4 - 图像5
这个图像代表了tabLayouts过去的样子.我希望我的数据看起来像这个图像.
所以问题是PopUpDetailsAdapterPlanT Class;
当我使用下面的代码时,每行填充相同的项目.对于此示例,每行写入ArrayList的最后一个元素(位置 - 明尼苏达州)如何处理此问题.谢谢你的帮助
public class PopUpDetailsAdapterPlanT extends ArrayAdapter {
Context context;
private ArrayList<ArrayList<Object>> keys;
private ArrayList<ArrayList<String>> values;
public PopUpDetailsAdapterPlanT(Context context, ArrayList<ArrayList<Object>> keys, ArrayList<ArrayList<String>> values) {
super(context,R.layout.popupdetails_listview_simpleitem);
this.keys = keys;
this.values = values;
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = …Run Code Online (Sandbox Code Playgroud) 此类问题之前已经被问到,但没有得到任何正确的,有效的解决方案,所以我再次发布这个问题.再次询问并浪费你的时间.请给出一些有效的解决方案 或者让我知道我做错了什么.提前致谢.
但是来了:
在页面上加载选项卡将像"预期选项卡"图像一样,但在选择后会出现像"即将到来的选项卡"图像. MainXML代码:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
style="@style/MyCustomTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_img_jpeg"
android:minHeight="10dp"
android:padding="10dp"
app:tabGravity="fill"
app:tabIndicatorColor="@color/TRANSPARENT"
app:tabMode="fixed"
app:tabTextColor="@color/blue" />
Run Code Online (Sandbox Code Playgroud)
@风格/ MyCustomTabLayout
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabBackground">@drawable/tab_bg</item>
</style>
Run Code Online (Sandbox Code Playgroud)
@绘制/ tab_bg
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/tab_bgselected" />
<item android:drawable="@drawable/tab_bgnotselected" />
</selector>
Run Code Online (Sandbox Code Playgroud)
@绘制/ tab_bgselected
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="0dp" android:top="0dp"
android:left="0dp" android:right="0dp" >
<shape android:shape="rectangle">
<solid android:color="@color/blue" />
<corners
android:topLeftRadius="10dp"
android:bottomLeftRadius="10dp">
</corners>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
就像那个@ drawable/tab_bgnotselected
在代码背后我写道:
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
try { …Run Code Online (Sandbox Code Playgroud) 我正在使用Android设计支持库中的TabLayout并想要设置其文本样式(标题).特别是大胆.如何在XML中实现这一点?
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
app:tabTextColor="@color/white"
app:tabSelectedTextColor="@color/white"
app:tabIndicatorColor="@color/accent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="3dp" />
Run Code Online (Sandbox Code Playgroud) 我正在关注这个例子..
我有一个问题,当我在ViewPager 相应的屏幕上滑动时,fragment但是当我从左向右或从右向左滑动并选择上一个选项卡时,选项卡指示符出现在新选择的选项卡上,但各自fragment不显示ViewPager.请帮助我,我哪里出错了?
android android-fragments android-viewpager android-tablayout
我想用Material Design Support库实现一个向导.
我正在使用ViewPager,Tablayout但我在动态添加新标签时遇到问题.
首先,我在onCreate方法中设置我的小部件:
viewPager = (ViewPager) findViewById(R.id.tab_viewpager);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new DummyFragment(), "1");
adapter.addFrag(new DummyFragment(), "2");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
然后我想在单击列表中的元素时添加另一张卡片:
adapter.addFrag(new DummyFragment(), "3");
adapter.notifyDataSetChanged();
tabLayout.setTabsFromPagerAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
问题是:添加后,所选卡首先重置.
如何防止这种行为?
我TabLayout在我的应用中使用了Tabbed导航.我有一个非常奇怪的问题,我使用此代码创建了4个选项卡:
private int[] tabIcons = {R.drawable.navigation_timeline_icon_selector, R.drawable.navigation_feed_icon_selector,
R.drawable.navigation_messages_icon_selector, R.drawable.navigation_notification_icon_selector};
TabLayout tabLayout = setTabLayout();
if (tabLayout != null) {
for (int i = 0; i < 4; i++) {
tabLayout.getTabAt(i).setIcon(tabIcons[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
tabIcon中的每个项目都是selector选定状态和非选定状态.所有图标选择器配置如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/navigation_timeline_selected_icon" android:state_selected="true"/>
<item android:drawable="@drawable/navigation_timeline_selected_icon" android:state_pressed="true"/>
<item android:drawable="@drawable/navigation_timeline_icon" />
</selector>
Run Code Online (Sandbox Code Playgroud)
问题是当应用程序启动时,第一个选定的选项卡(索引0)不使用选定的状态图标.相反,它使用非选择状态.
更详细的解释是这个问题的截图,首次启动我的选项卡如下所示:
相反,它应该是这样的:
更改页面后,所有图标都恢复为完整功能,并且正确选择了所选状态.
我尝试使用该TabLayout.Tab select()方法,但结果与使用的图标相同是未选择的图标.
有人知道我能做些什么来解决它吗?
我正在添加自定义视图,tablayout因为我正在使用以下链接方法:
https://guides.codepath.com/android/google-play-style-tabs-using-tablayout
Run Code Online (Sandbox Code Playgroud)
这工作正常.我正在使用com.android.support:design:23.1.1,但是当我更新到com.android.support:design:23.3.0有问题时:
自定义视图可见,但是当我打电话时
viewPager.getAdapter().notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
然后自定义视图不再可见,它已经消失了.知道23.3.0中有什么变化会影响到这个吗?
我该如何解决这个问题?相同的代码在23.1.1中正常工作,但在23.3.0中没有.
我按照官方文档设置了一个带有 ViewPager2 的 TabLayout。我以这种方式使用 TabLayoutMediator 将 TabLayout 与 ViewPager2 连接起来:
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
tab.setIcon(getTabIcon(position))
tab.text = getTabTitle(position)
}.attach()
Run Code Online (Sandbox Code Playgroud)
但是 Leak Canary 检测到似乎与 TabLayout 和 TabLayoutMediator 相关的内存泄漏。日志如下:
2020-05-13 17:57:32.914 D/LeakCanary: ????
2020-05-13 17:57:32.914 D/LeakCanary: ? GC Root: Local variable in native code
2020-05-13 17:57:32.914 D/LeakCanary: ?
2020-05-13 17:57:32.914 D/LeakCanary: ?? android.net.ConnectivityThread instance
2020-05-13 17:57:32.914 D/LeakCanary: ? Leaking: NO (PathClassLoader? is not leaking)
2020-05-13 17:57:32.914 D/LeakCanary: ? Thread name: 'ConnectivityThread'
2020-05-13 17:57:32.914 D/LeakCanary: ? ? ConnectivityThread.contextClassLoader
2020-05-13 17:57:32.914 D/LeakCanary: …Run Code Online (Sandbox Code Playgroud)