活动和片段中的不同TextView外观

时间:2016-04-09 22:31:28

标签: android android-fragments textview

我使用setContentView() Activity的某个布局,它完全正常。但是当我在Fragment中使用相同的布局时,有一组TextView会丢失其文本而我不知道为什么。 ActivityFragment具有相似的大小(大约是屏幕高度的90%,宽度的100%)。另外 - 当我为getText()键盘中的每个TextView调试Fragment时,会返回正确的字母。

With Text - Activity No Text - Fragment

这两个图像使用相同的布局来显示内容(这让我相信故障不在那里 - 随意纠正我)但是片段包含在一些额外的布局中以给出Toolbar 。这是下面的代码XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    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"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"/>

</android.support.v4.widget.DrawerLayout>

R.layout.app_bar_main

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.apps4life.quoteunquote2.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </android.support.design.widget.AppBarLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/content_frame"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
        <!-- Fragments go in here -->
    </RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

1 个答案:

答案 0 :(得分:0)

所以问题要简单得多。此代码同时出现在ActivityFragment

float keyWidth = keysArray[0].getWidth();
for(int a = 0; a < 27; a++){
    keysArray[a].setTextSize(TypedValue.COMPLEX_UNIT_PX, keyWidth/2);
}

但它位于OnWindowFocusChanged()的{​​{1}}和Activity的{​​{1}}。这意味着,对于OnCreateView()Fragment是适当的大小,而对于Activity,它是0,导致文本大小为0.