gpt4 book ai didi

android - Android 中带有 Sherlock Fragment 的操作栏选项卡的自定义背景

转载 作者:行者123 更新时间:2023-11-29 21:28:25 25 4
gpt4 key购买 nike

我已经使用 Sherlock Fragment 创建了一个类,以使用 ViewPager 启用滑动 View 。现在我正在尝试使用 setBackgroundResource() 方法更改选项卡背景,这在 tabspec 中是可能的,但它不起作用。我想在每个选项卡被聚焦/选中/未选中时为其添加自定义背景。

我试过使用选择器,但没用

<item android:drawable="@drawable/selected" android:state_selected="true"/>
<item android:drawable="@drawable/not_selected" android:state_selected="false"/>

mActionBar.setStackedBackgroundDrawable(getResources().getDrawable(
R.drawable.tab_indicator));

这是我的主课

public class MainActivity extends SherlockFragmentActivity {

// Declare Variables
ActionBar mActionBar;
ViewPager mPager;
Tab tab;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from activity_main.xml
setContentView(R.layout.activity_main);

// Activate Navigation Mode Tabs
mActionBar = getSupportActionBar();
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// Locate ViewPager in activity_main.xml
mPager = (ViewPager) findViewById(R.id.pager);

// Activate Fragment Manager
FragmentManager fm = getSupportFragmentManager();

// Capture ViewPager page swipes
ViewPager.SimpleOnPageChangeListener ViewPagerListener = new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
// Find the ViewPager Position
mActionBar.setSelectedNavigationItem(position);
}
};

mPager.setOnPageChangeListener(ViewPagerListener);
// Locate the adapter class called ViewPagerAdapter.java
ViewPagerAdapter viewpageradapter = new ViewPagerAdapter(fm);
// Set the View Pager Adapter into ViewPager
mPager.setAdapter(viewpageradapter);

// Capture tab button clicks
ActionBar.TabListener tabListener = new ActionBar.TabListener() {

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Pass the position on tab click to ViewPager
mPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};

// Create first Tab
tab = mActionBar.newTab().setText("Tab1").setTabListener(tabListener);
mActionBar.addTab(tab);

// Create second Tab
tab = mActionBar.newTab().setText("Tab2").setTabListener(tabListener);
mActionBar.addTab(tab);

// Create third Tab
tab = mActionBar.newTab().setText("Tab3").setTabListener(tabListener);
mActionBar.addTab(tab);

}

}

最佳答案

这是基于我刚刚做的事情(我的,那是多么痛苦)。我没有尝试编译这个,但希望它有所帮助。祝你好运!

在主 Activity 的 onCreate 方法中,将您的 addTab 语句替换为:

    ActionBar.Tab tab1 = mActionBar.newTab().setTabListener(tabListener);
//Create a temporary RelativeLayout and inflate it with your custom layout
RelativeLayout rl1 = (RelativeLayout) getLayoutInflater().inflate(R.layout.tabLayout, null);

//Set the title of the tab
TextView t1 = (TextView) rl1.findViewById(R.id.tab1_text);
t1.setText("Tab1 Title");
t1.setMinimumWidth(150);//Prevents the tabs from becoming too small on larger screens, Change as needed

//Set the background of the tab to the layout you just created
tab1.setCustomView(rl1);
//Add the tab to your ActionBar
mActionBar.addTab(tab1);

tab1Layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp"
android:background="@drawable/yourDrawable"
android:layout_margin="0dp">

<TextView
android:id="@+id/tab1_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/yourStyleIfYouWantToUseOne"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:gravity="center|center_horizontal"
android:textStyle="bold"/>
</RelativeLayout>

基本上,我们通过在布局中放置一个 TextView 并添加背景来创建一个“假”标签。

另外请注意,您的可绘制对象需要包含一个用于选定和未选定可绘制对象的选择器。如果您需要示例,请查看 Android Asset Studio 生成的内容,这就是我用来制作标签的内容。

根据需要对尽可能多的选项卡重复此操作。

如果其中的任何部分含糊不清或令人困惑,请随时提问。 ;)

关于android - Android 中带有 Sherlock Fragment 的操作栏选项卡的自定义背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com