相关疑难解决方法(0)

Android支持设计TabLayout:重力中心和模式可滚动

我想在我的项目中使用新的Design TabLayout.我希望布局适应每个屏幕尺寸和方向,但可以在一个方向上正确看到.

我正在处理重力和模式设置我的tabLayout为:

    tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
    tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
Run Code Online (Sandbox Code Playgroud)

所以我希望如果没有空间,tabLayout是可滚动的,但是如果有空间,它就会居中.

从指南:

public static final int GRAVITY_CENTER Gravity用于布置TabLayout中心的选项卡.

public static final int GRAVITY_FILL Gravity用于尽可能多地填充TabLayout.此选项仅在与MODE_FIXED一起使用时生效.

public static final int MODE_FIXED固定选项卡同时显示所有选项卡,最适用于受益于选项卡之间快速枢轴的内容.选项卡的最大数量受视图宽度的限制.固定标签的宽度相等,基于最宽的标签标签.

public static final int MODE_SCROLLABLE可滚动选项卡在任何给定时刻显示选项卡的子集,并且可以包含更长的选项卡标签和更多数量的选项卡.当用户不需要直接比较标签标签时,它们最适合用于浏览触摸界面中的上下文.

所以GRAVITY_FILL只与MODE_FIXED兼容但是,at没有为GRAVITY_CENTER指定任何内容,我希望它与MODE_SCROLLABLE兼容,但这是我使用GRAVITY_CENTER和MODE_SCROLLABLE

在此输入图像描述

因此它在两个方向都使用SCROLLABLE,但它没有使用GRAVITY_CENTER.

这就是我对景观的期望; 但要拥有这个,我需要设置MODE_FIXED,所以我得到的是肖像:

在此输入图像描述

如果tabLayout适合屏幕,为什么GRAVITY_CENTER不能用于SCROLLABLE?有没有办法动态设置重力和模式(并看看我期待什么)?

非常感谢你!

编辑:这是我的TabLayout的布局:

<android.support.design.widget.TabLayout
    android:id="@+id/sliding_tabs"
    android:layout_width="match_parent"
    android:background="@color/orange_pager"
    android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

android gravity material-design android-5.0-lollipop

88
推荐指数
7
解决办法
9万
查看次数

当tabMode设置为'scrollable'时,TabLayout不填充宽度

我已经TabLayout(从支持库v22.2.1)添加到我的片段:

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

问题是当片段的方向是横向时(在片段的初始创建之前或之后),TabLayout它与宽度不匹配Fragment(是的,父节点的宽度也设置match_parent为).

当屏幕宽度很小时(即不是所有标签都可以同时显示): 在此输入图像描述

当屏幕宽度足够大以显示所有选项卡时(请参阅右侧的空白区域): 在此输入图像描述

如果我更改tabMode为固定,则填充宽度但标签太小.那里有适当的解决方案吗?

android android-support-library android-tablayout

42
推荐指数
6
解决办法
4万
查看次数

如何在android中的布局xml文件中向TabLayout添加选项卡?

我一直在研究android 2周.现在我正在开发我的第一个android项目.在我的项目中,我需要与Tabs一起使用操作栏.我知道这在android中很常见.对于操作栏,我使用工具栏和v7.我认真对待行动吧.但我有标签布局的问题.问题是我想在布局xml文件中添加选项卡到选项卡布局.

例如

<TabLayout>
//tab buttton goes here
 <TabButton1></TabButton1>
 <TabButton1></TabButton1>
 .
 .
<TabLayout>
Run Code Online (Sandbox Code Playgroud)

我搜索了很多关于tablayout的教程.但是所有教程都以编程方式定义选项卡布局的选项卡.那么请问如何在xml中为选项卡布局定义选项卡,并通过findViewById以编程方式为它们定义事件?我不想使用按钮视图而不是标签.请问我该如何实现?

tabs android

8
推荐指数
1
解决办法
4277
查看次数

选项卡上的android材质设计点击事件

在我的Android项目中,我使用Material-design进行选项卡视图.我有 :

tab_activity.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"
   />
Run Code Online (Sandbox Code Playgroud)

和java类文件是:

public class SimpleTabsActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

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

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

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

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); …
Run Code Online (Sandbox Code Playgroud)

android

6
推荐指数
1
解决办法
7374
查看次数

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
查看次数

如何使用android.support.design.widget.TabLayout创建选项卡的自定义布局?

我找到了以下关于如何设置的文档customView.但是当我将id我的布局更改为"text1"和"icon"时,setText()并且setIcon()不起作用.

public TabLayout.Tab setCustomView(int layoutResId)

设置要用于此选项卡的自定义视图.

如果膨胀的布局包含一个TextViewID为,text1那么将使用给定的值更新setText(CharSequence).同样,如果此布局包含ImageView带有ID的图标,则它将使用给定的值进行更新setIcon(Drawable).

(来源:http://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html#setCustomView(int))

谁能举个例子说明这是如何运作的?

Java代码:

    TabLayout.Tab tabAdd = tabLayout.getTabAt(0);
    tabAdd.setCustomView(R.layout.tab_layout_custom_view);
    tabAdd.setText("Add");
    tabAdd.setIcon(R.mipmap.add_tab).setText("Add");
Run Code Online (Sandbox Code Playgroud)

布局代码:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:id="@+id/icon"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0"
    android:id="@+id/text1"
    android:gravity="center"
    android:layout_below="@+id/icon" />
Run Code Online (Sandbox Code Playgroud)

android

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