【问题标题】:Android XML: Style TabHost to have lowercase textAndroid XML:样式 TabHost 具有小写文本
【发布时间】:2020-03-02 13:39:04
【问题描述】:

我正在为我的 Android 应用程序实现标签布局。我尝试将每个标签设置为某种样式,将textAllCaps 设置为false (app:tabTextAppearance="@style/MyCustomTextAppearance")-但是,这对我不起作用。这个问题不是重复的,因为我 不使用 TabLayout,我使用的是 TabHost。以下是我的代码:

styles.xml中的样式:

<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="textAllCaps">false</item>
</style>

content_main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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">


    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        tools:context=".MainActivity"
        app:tabTextAppearance="@style/MyCustomTextAppearance"
        tools:showIn="@layout/activity_main">

        <TabHost
            android:id="@+id/tab_host"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="#ffffff"
            app:tabTextAppearance="@style/MyCustomTextAppearance"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                app:tabTextAppearance="@style/MyCustomTextAppearance"
                android:orientation="vertical">

                <FrameLayout
                    android:id="@android:id/tabcontent"
                    app:tabTextAppearance="@style/MyCustomTextAppearance"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content">

                    <LinearLayout
                        android:id="@+id/tab1"
                        app:tabTextAppearance="@style/MyCustomTextAppearance"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" />

                    <LinearLayout
                        android:id="@+id/tab2"
                        app:tabTextAppearance="@style/MyCustomTextAppearance"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" />

                    <LinearLayout
                        android:id="@+id/tab3"
                        app:tabTextAppearance="@style/MyCustomTextAppearance"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" />
                </FrameLayout>

                <TabWidget
                    android:id="@android:id/tabs"
                    app:tabTextAppearance="@style/MyCustomTextAppearance"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" />
            </LinearLayout>
        </TabHost>


        <com.anychart.AnyChartView
            android:id="@+id/piechart"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            app:layout_constraintTop_toBottomOf="@+id/tab_host"
            />

    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

下面是我的应用的样子(标签的文本仍然大写):

【问题讨论】:

标签: android android-layout android-styles


【解决方案1】:
for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
            View v = tabhost.getTabWidget().getChildAt(i);

            TextView tv = (TextView) tabhost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
  
            tv.setAllCaps(false);
}

【讨论】:

    【解决方案2】:

    使用它并改变与颜色相同的样式

    for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
                View v = tabHost.getTabWidget().getChildAt(i);
                v.setBackgroundResource(R.drawable.tabs);
    
                TextView tv = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
                tv.setTextColor(getResources().getColor(R.color.white));
    }
    

    【讨论】:

      【解决方案3】:

      在 tabLayout 上应用以下样式

       app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-06
        • 2014-07-22
        • 1970-01-01
        相关资源
        最近更新 更多