gpt4 book ai didi

android - ActionBar.Tab 的自定义 View 显示不正确

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:04 27 4
gpt4 key购买 nike

我目前有一个使用选项卡式导航实现的 actionBar,现在想自己自定义选项卡。我为每个选项卡创建了一个自定义 XML 布局以具有一个 TextView 和一个可单击的 ImageButton,并使用 ActionBar.Tab.setCustomView 对其进行设置。问题是布局的所有属性似乎都没有任何效果(例如对齐)。任何帮助,将不胜感激!

这是一张显示生成内容的图片:Image of what is being produced

我的自定义选项卡布局 XML 文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/tab_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_action_refresh"/>

</RelativeLayout>

ActionBar 代码:

final ActionBar actionBar = getActionBar();

//Because there is no 'parent' when navigating from the action bar, the home button for the Action Bar is disabled.
actionBar.setHomeButtonEnabled(false);

//Specify that the actionBar will include a tabbed navigation
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


// Setting up the ViewPager rowingViewPager, attaching the RowingFragmentPagerAdapter and setting up a listener for when the
// user swipes between sections.
rowViewPager = (ViewPager) findViewById(R.id.pager);
rowViewPager.setAdapter(rowAdapter);
rowViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
}
});


// For loop to add tabs for each fragment to the actionBar
for (int tab_counter = 0; tab_counter < rowAdapter.getCount(); tab_counter++)
{
Tab new_tab = actionBar.newTab();
new_tab.setCustomView(R.layout.custom_tab);
TextView tab_title = (TextView) new_tab.getCustomView().findViewById(R.id.tab_title);
tab_title.setText(rowAdapter.getTabTitle(tab_counter));
new_tab.setTabListener(this);
// Add tab with specified text as well as setting this activity as the TabListener.
actionBar.addTab(new_tab);


}

rowViewPager.setOffscreenPageLimit(2); //Sets the number of off-screen fragments to store and prevent re-load. Will increase if future fragments are added.
}

最佳答案

问题在于没有自定义 actionBar 布局本身,而是改变了样式。默认的 ActionBar 有一个属性,其中左右填充为 16dp。您可以在选项卡布局中做任何您想做的事情,但它不会覆盖它。

为此,我只是在 styles.xml 中为 ActionBar 选项卡编写了一个新样式,我在其中覆盖了该填充并将其应用于应用程序主题中的 actionBarTabStyle 属性。这是我的新 styles.xml,它显示了更改。

<resources>

<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>


<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
</style>

</resources>

关于android - ActionBar.Tab 的自定义 View 显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755588/

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