c# - 使用 MvvmCross 将图标添加到 TabLayout

标签 c# android xamarin mvvmcross android-tablayout

我一直在查看 MvvmCross 上的 Playground 项目 ( https://github.com/MvvmCross/MvvmCross/tree/develop/Projects/Playground )

将 fragment 加载到选项卡中的方法是按以下方式设置属性:

[MvxTabLayoutPresentation(TabLayoutResourceId = Resource.Id.tabs, ViewPagerResourceId = Resource.Id.viewpager, Title = "Tab 1", ActivityHostViewModelType = typeof(TabsRootViewModel))]
[MvxTabLayoutPresentation(TabLayoutResourceId = Resource.Id.tabs, ViewPagerResourceId = Resource.Id.viewpager, Title = "Tab 1", FragmentHostViewType = typeof(TabsRootBView))]
[Register(nameof(Tab1View))]
public class Tab1View : MvxFragment<Tab1ViewModel>

我的问题是,除了可以在 MvxTabLayoutPresentation 上指定的标题外,如何向每个选项卡添加和图标?

最佳答案

这不是开箱即用的,更多的是关于 TabLayout 自定义。

你可以这样实现。

为您的选项卡布局项目创建一个 CustomView,myCustomTab.axml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/txtTab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:textColor="#FFFFFF"
    android:textSize="12"
    android:textStyle="bold" />

然后在具有 TabLayout 的 View 中,在 OnCreate/OnCreateView 上配置它:

var tabLayout = view.FindViewById<TabLayout>(Resource.Id.tabs);
var customTab = inflater.Inflate(Resource.Layout.myCustomTab, null);
customTab.Text = "MyText";
// this sets the icon above the text
customTab.SetCompoundDrawablesWithIntrinsicBounds(0, Resource.Drawable.my_icon, 0, 0);
tabLayout.GetTabAt(0).SetCustomView(customTab);

显然,您必须根据拥有的选项卡布局项执行此操作的次数。

此外,您还可以使用它向选项卡布局项目添加任何自定义。

来源(Java):https://mobikul.com/make-custom-tabs-icons-android/

关于c# - 使用 MvvmCross 将图标添加到 TabLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743903/

相关文章:

java - 在 Android 上的两个 Activity 之间切换时出现 NullPointerException

android - 将应用程序发布到 Google Play 时出错。

c# - 将字符串转换为 DateTime 变量?

c# - 如何在 Microsoft.Speech 中使用 DTMFRecognitionEngine 类

Android chrome 自定义标签可定制

ios - xamarin ios 执行旧文件

ios - 如何从 iOS 模拟器获取 IPA 文件

c# - Ninject 拦截不会在同一类中使用嵌套方法调用触发

c# - 查找未使用的代码

android - 更改 Android SeekBar 以在主要进度之上绘制次要进度?