如何通过动态单击按钮来更改选项卡标题名称?

Posted

技术标签:

【中文标题】如何通过动态单击按钮来更改选项卡标题名称?【英文标题】:How to change Tab Title Name by dynamically clicking a button? 【发布时间】:2016-07-09 07:37:13 【问题描述】:

我在我的应用中使用 Collapsed ToolBar 和 2 个 TabFragment(登录、注册)。

登录片段同时具有登录和忘记密码的功能。

登录片段

登录 --->选项卡名称 - 登录

电子邮件 --> 编辑文本

用户名 --> 编辑文本

登录按钮 --> 按钮

已经有一个帐户? --> TextView --> 如果单击此文本视图,则忘记密码视图设置为可见且此登录视图必须不可见。

忘记密码 ---> 标签标题名称需要更改为忘记密码

如何在单击按钮时更改此选项卡标题名称?

另一个疑问是我需要在左右滑动此选项卡。

布局代码: activity_tab.xml:

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/drawer_layout"
    style="@style/Layout_mm"
    android:background="@color/background_2"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        style="@style/Layout_mm"
        android:fitsSystemWindows="true">

        <android.support.design.widget.AppBarLayout
            style="@style/Layout_mw"
            android:fitsSystemWindows="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <RelativeLayout
                style="@style/Layout_mw"
                android:layout_marginTop="@dimen/ten_dp">

                <ImageView
                    android:id="@+id/header"
                    android:layout_
                    android:layout_
                    android:background="@drawable/green_slide"
                    android:fitsSystemWindows="true"
                    android:scaleType="centerCrop"
                    app:layout_collapseMode="parallax" />

                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/imgProfile"
                    android:layout_
                    android:layout_
                    android:layout_centerHorizontal="true"
                    android:layout_centerVertical="true"
                    android:layout_marginTop="@dimen/five_dp"
                    android:src="@drawable/login_logo" />
            </RelativeLayout>

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_
                android:layout_
                android:layout_gravity="bottom"
                android:background="@color/colorPrimaryDark"
                app:tabIndicatorColor="@color/white" />

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

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            style="@style/Layout_mm"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

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

</android.support.v4.widget.DrawerLayout>

loginfragment.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/Layout_mm"
    android:background="@color/background_2"
    android:orientation="vertical">

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/cardlist_item"
        style="@style/Layout_mw"
        android:layout_marginBottom="@dimen/twelve_dp"
        android:layout_marginLeft="@dimen/fifteen_dp"
        android:layout_marginRight="@dimen/fifteen_dp"
        android:layout_marginTop="@dimen/fifty_dp"
        android:background="@color/white"
        android:orientation="vertical"
        android:padding="@dimen/ten_dp"
        card_view:cardElevation="@dimen/three_dp">

        <LinearLayout
            android:id="@+id/loginLayout"
            style="@style/Layout_mw"
            android:background="@color/background_2"
            android:orientation="vertical"
            android:padding="@dimen/fifteen_dp">

            <LinearLayout
                android:layout_
                android:layout_
                android:background="@color/white"
                android:gravity="center"
                android:orientation="vertical">

                <EditText
                    android:id="@+id/editTextEmail"
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="@dimen/four_dp"
                    android:background="@android:color/transparent"
                    android:gravity="center_vertical"
                    android:hint="Email"
                    android:imeOptions="actionNext"
                    android:inputType="textEmailAddress"
                    android:textColorHint="@color/hint_color_1" />
            </LinearLayout>

            <LinearLayout
                android:layout_
                android:layout_
                android:layout_marginTop="@dimen/twenty_dp"
                android:background="@color/white"
                android:orientation="vertical">

                <EditText
                    android:id="@+id/editTextPassword"
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="@dimen/four_dp"
                    android:background="@android:color/transparent"
                    android:gravity="center_vertical"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:textColorHint="@color/hint_color_1" />
            </LinearLayout>

            <TextView
                android:id="@+id/txtForgot"
                style="@style/Layout_mw"
                android:layout_marginTop="@dimen/ten_dp"
                android:gravity="right"
                android:text="Forgot Password?"
                android:textColor="@color/hint_forgot" />

            <Button
                android:id="@+id/butGo"
                android:layout_
                android:layout_
                android:layout_marginTop="@dimen/twenty_dp"
                android:background="@drawable/orange_curved"
                android:elevation="@dimen/ten_dp"
                android:text="GO"
                android:textColor="@color/white" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ForgotLayout"
            style="@style/Layout_mw"
            android:background="@color/background_2"
            android:orientation="vertical"
            android:padding="@dimen/fifteen_dp">

            <TextView
                style="@style/Layout_ww"
                android:layout_marginTop="@dimen/ten_dp"
                android:gravity="left"
                android:text="Forgot Password"
                android:textColor="@color/hint_forgot" />

            <LinearLayout
                android:layout_
                android:layout_
                android:layout_marginTop="20dp"
                android:background="@color/white"
                android:gravity="center"
                android:orientation="vertical">

                <EditText
                    android:id="@+id/editTextEmailF"
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="@dimen/four_dp"
                    android:background="@android:color/transparent"
                    android:gravity="center_vertical"
                    android:hint="Email"
                    android:imeOptions="actionDone"
                    android:inputType="textEmailAddress"
                    android:textColorHint="@color/hint_color_1" />
            </LinearLayout>


            <Button
                android:id="@+id/forgotBut"
                android:layout_
                android:layout_
                android:layout_marginBottom="5dp"
                android:layout_marginTop="@dimen/thirty_dp"
                android:background="@drawable/orange_curved"
                android:elevation="@dimen/ten_dp"
                android:text="RESET PASSWORD"
                android:textColor="@color/white" />

            <TextView
                android:id="@+id/alreadyAccount"
                style="@style/Layout_ww"
                android:layout_gravity="right"
                android:layout_marginTop="@dimen/ten_dp"
                android:gravity="right"
                android:text="Already Have an Account?"
                android:textColor="@color/hint_forgot" />

        </LinearLayout>
    </android.support.v7.widget.CardView>

</LinearLayout>

【问题讨论】:

标签使用哪个库或视图? 请务必添加相关代码 已添加代码。请检查。 我已在下面的答案或解决方案部分添加了我的答案。请看一看。 【参考方案1】:

如果您使用的是 android.support.design.widget.TabLayout

获取您选择的Tab位置并设置标题-

 TabLayout.Tab tab = tabLayout.getTabAt(position);
 tab.setText("title");

希望它会有所帮助。

【讨论】:

【参考方案2】:

由于您在项目中使用了 TabLayout 和 ViewPager,因此您可以通过 TabLayout 更改标签标题。

首先,您需要从 TabLayout 中检索正确的选项卡。为此,您需要 TabLayout 类的 getTabAt() 方法。此方法将在您在方法参数中指定的位置为您提供 Tab。您将从该方法中收到 TabLayout.Tab。

现在,您只需要借助 TabLayout.Tab 对象的 setText() 方法更改此 TabLayout.Tab 对象的标题即可。

欲了解更多信息,请访问以下链接:

http://developer.android.com/reference/android/support/design/widget/TabLayout.html

http://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html

【讨论】:

以上是关于如何通过动态单击按钮来更改选项卡标题名称?的主要内容,如果未能解决你的问题,请参考以下文章

动态更改活动选项卡索引 jQuery UI 选项卡

通过鼠标单击选项卡来捕获选项卡更改事件

通过双击名称更改 TabItem 的名称

使用关闭按钮切换引导选项卡

在运行时更改 TabBar 中的选项卡

从子类编辑选项卡名称