我正在一个包含两个选项卡的屏幕上工作。我在这里使用 AppCompatActivity。我在选项卡中设置了带有文本的图标,但我希望图像右对齐,并且它们之间应该有一些空间。代码如下:
1. Activity_ProfessionalTimeline.java
public class Activity_ProfessionalTimeline extends AppCompatActivity implements OnClickListener {
private Toolbar toolbatTop;
private TabLayout tabLayout;
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private int[] tabIcons = {
R.drawable.social,
R.drawable.professional
};
private ImageView _img_Profile;
private TextView _txt_UserName;
private TextView _txt_UserDestination;
ArrayList<Model_LoginDetails> arr_LogInUserDetails = new ArrayList<Model_LoginDetails>();
private ImageView _imt_userImage;
private ListView _listView_SelectOpition;
private boolean profilebtnstatus = false;
private RelativeLayout _relativelayour_status;
private ListView _listviewmoroption;
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_professionalttimeline);
// Top Toolbar …Run Code Online (Sandbox Code Playgroud) 这是whatsapp应用程序。请注意,当您选择一个选项卡时,“CONTACTS”一词是白色的,而其他词 CALLS 和 CHATS 的 alpha 值可能为 50%:
他们是如何做到这一点的?
我想做一些类似的事情,但用图标而不是文字,但原理应该是一样的。我已经用我的 TabLayout 完成了以下操作:
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setTabGravity(tabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setIcon(R.drawable.icon1);
tabLayout.getTabAt(1).setIcon(R.drawable.icon2);
tabLayout.getTabAt(2).setIcon(R.drawable.icon3);
Run Code Online (Sandbox Code Playgroud)
这是我的 tabLayout 的 xml:
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#cccccc"
app:tabPaddingStart="-1dp"
app:tabPaddingEnd="-1dp" />
Run Code Online (Sandbox Code Playgroud)
我还阅读了此线程:如何在使用 TabLayout 时更改选项卡背景颜色?但这不完全是我想要的。
该线程表示,当您选择或取消选择它时,它会更改整个选项卡的颜色。这意味着您会将图标后面的整个背景更改为不同的颜色,而我只希望图标具有较低的不透明度,而不是背景和图标具有较低的不透明度。
Whatsapp 没有这样做 - 你只能看到“呼叫”这个词被设置为较低的不透明度,而不是这个词背后的背景。
我正在尝试在 TabLayout 中设置两个选项卡。第一个选项卡是显示配置文件,第二个选项卡是显示活动。我有 TabLayout 和 ViewPager 设置。我还创建了将两个片段链接到 tablayout 所需的适配器。当我在我的手机上运行它时,两个屏幕和选项卡会显示,但它们不会显示在选项卡区域内 - 它们覆盖了实际的选项卡。我正在使用设计支持库 (v23.1.1)
我有一个带有片段区域的主活动文件,它根据用户想要做什么来改变视图。
我该怎么做才能让标签内容显示在标签内部而不是标签顶部?这是我的代码:
编辑:这是 profile_fragment.xml 文件(这是我希望选项卡出现的地方):
<RelativeLayout 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="Fragments.ProfileFragment">
<!-- TODO: Update blank fragment layout -->
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id = "@+id/ProfileTabLayout"
android:background="@color/colorPrimary"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabTextColor="@color/colorIcons"
>
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id = "@+id/ProfilePager"
></android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)
user_profile_tab_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryLight"
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:src="@drawable/person_profile"
android:layout_margin="5dp"/>
<TextView
style="@style/TextViewStyle"
android:id = "@+id/userTitleTextView"
android:textSize="24sp"
android:textStyle="bold" …Run Code Online (Sandbox Code Playgroud) 我想在选择时更改选项卡的颜色。在他们说的材料设计教程中,tabSelectedTextColor我们可以做到这一点。但它对我不起作用。我在onTabSelected下面的代码中强制这样做:
public void onTabSelected(TabLayout.Tab tab) {
TextView v = (TextView) tab.getCustomView().findViewById(R.id.text_tab_counter);
v.setVisibility(View.INVISIBLE);
TextView vv=(TextView) tab.getCustomView().findViewById(R.id.text_tab);
vv.setTextColor(getResources().getColor(R.color.Notify));
v.setText("");
tab.getCustomView().invalidate();
viewPager.setCurrentItem(tab.getPosition());
}
Run Code Online (Sandbox Code Playgroud)
为什么这没有成功?
编辑 这是因为我有自定义选项卡布局?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
>
<TextView
android:textColor="@color/textColorPrimary"
android:layout_marginRight="2dp"
android:id="@+id/text_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="•"
android:textColor="@color/Notify"
android:textSize="@dimen/badget_size"
android:id="@+id/text_tab_counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
编辑:
ViewPageAdapter 代码:
package ir.whc.news.adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import ir.whc.news.R;
/**
* …Run Code Online (Sandbox Code Playgroud) 当我在棉花糖设备上测试我的应用程序时,我遇到了一个奇怪的问题,我的标签页标题没有显示。当我在所有其他设备上测试它时,标题显示得很好。在调试时,设备会遇到所有相同的点,包括我的适配器内的“getPageTitle”方法。我已经阅读了许多使用 android 的 TabLayout 和 ViewPager 的教程,只是为了确保我没有遗漏任何东西,而且据我所知,我没有做错任何事情。
这是我主要活动中的代码,
// setup viewPager
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
setupViewPager(viewPager);
// setup tabLayout
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
Run Code Online (Sandbox Code Playgroud)
我的 setUpViewPager() 方法,
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
viewPager.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
和我的适配器类,它扩展了 FragmentPagerAdapter
private class ViewPagerAdapter extends FragmentPagerAdapter {
private static final int NUM_FRAGMENTS = 2;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: return AllFeaturesFragment.newInstance();
case 1: …Run Code Online (Sandbox Code Playgroud) android android-viewpager android-tablayout android-6.0-marshmallow
我有一个TabLayout,我使用一起AppBarLayout,ToolBar以及ViewPager为了有滚动的标签。目前,我有一个选项卡,但不是左对齐选项卡居中。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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.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/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</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) 我希望 tabMode可滚动,tabFilled with tabs (有单行标题)。由于 Tab 的数量及其标题在我的应用程序中是动态的。当我设置给定的属性时,我该如何处理它们。选项卡的标题来自两行。当标签数更大时。
app:tabGravity="fill"
app:tabMaxWidth="0dp"
app:tabMode="fixed"
Run Code Online (Sandbox Code Playgroud)
当Tabs数量较少时,TabMode设置为可滚动。然后额外的空间如下所示。

我怎样才能让 Tablayout 在所有手机和一行文本中工作。只需删除第二个屏幕的空格并为第一个图像制作单行。
我知道我必须这样做,change it's tabMode and tabGravity for these two cases但我怎么知道何时更改它的 tabMode 和 tabGravity。可能我只有三个选项卡,但它们的标题很长,而且它们填满了整个空间。有时我们有 5 个标题很小的标签。它们很容易适应屏幕。
我正在尝试使用 gradle 中的 compile 'com.android.support:design:25.3.1' 在 tablayout 中设置自定义选项卡。
我想使用选择器,以便在单击选项卡时它会根据其状态进行更改。
所以我尝试了以下失败:
这是我的活动 xml:
<ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/white"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
style="@style/MyCustomTabLayout"
/>
Run Code Online (Sandbox Code Playgroud)
这是我用于 tabLayout 的样式:
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabIndicatorColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
隐藏下划线。
这是我的主页选项卡的选择器之一:
这是我对每个选项卡的自定义视图:
<ImageView
android:id="@+id/iv_imgview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:src="@drawable/home_tab_selector"
/>
<TextView
android:id="@+id/tv_tab_name"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="HOME"
/>
Run Code Online (Sandbox Code Playgroud)
这是创建 tablayout 的代码部分:
for (int i = 0; i < NUM_OF_TABS; i++)
tabLayout.addTab(tabLayout.newTab());
adapter = new LandingPagerAdapter(getApplicationContext(),getSupportFragmentManager(), tabLayout.getTabCount());
//Adding adapter to pager
viewPager.setAdapter(adapter);
tabLayout.addOnTabSelectedListener(this);
tabLayout.setupWithViewPager(viewPager);
// Iterate over …Run Code Online (Sandbox Code Playgroud) 需要帮忙
我已经搜索了我的要求,但没有找到发布我自己的问题。
我需要在选项卡上方而不是下方显示行,因为所有解决方案都是在选项卡文本下方添加行。
我应该使用自定义选项卡还是 android 支持这种情况而不进行自定义?
我查看的链接如下
没有发布代码,因为我想知道应该使用什么......你的建议会有所帮助......谢谢
我正在处理我在选项卡上设置的两个片段。
我有两个问题:
这是添加片段并设置其标题的代码
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new OneFragment(), "Current\nSubscription");
Run Code Online (Sandbox Code Playgroud)