Android - 视图在它们不应该是(旧设备)时是不可见的

时间:2016-02-10 15:41:34

标签: android view fragment invisible

我正在使用Android API级别为21的普通手机上测试和开发应用程序。每个视图都按照应有的方式运行,并且没有任何问题。

但是,当切换到使用API​​ 16的旧设备时,片段的某些特定视图不可见。当离开片段并返回相同的片段时,它将显示。

因此,例如,我打开应用程序并创建开始片段。加载并显示图像按钮,应显示在其下的文本保持隐藏状态。 < - 不知道为什么

离开该片段并返回后,按钮DO下方的文字出现。

这种情况发生在许多其他碎片上,我不知道这实际上是如何发生的,它也是不一致的..

这是我谈到的具体部分:

<?xml version="1.0" encoding="UTF-8"?>
...
    <Material>
        <Name>&lt;Beige&gt;1</Name>
        <Color>#d3bd90</Color>
    </Material>

它的外观基本表示:

enter image description here

我只是设置文本,基本的Android内容..

<LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/dashboard_shortcut_timetable"
        android:paddingBottom="10dp"
        android:layout_weight="0.3">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/dashboard_shortcut_1"
                android:src="@drawable/ic_shortcut"
                android:background="@color/bg_white"
                android:layout_centerHorizontal="true"/>
        </RelativeLayout>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/dashboard_shortcut_timetable"
            android:id="@+id/dashboard_shortcut_textview_1"
            android:gravity="center|bottom"/>

所以这种情况发生在其他视图以及一些菜单项中,我必须将LATER设置为不可见/可见才能使其正常工作。

我的问题是;为什么会发生这种情况,如何解决,是依赖于设备或API级别?

1 个答案:

答案 0 :(得分:0)

对于有同样问题的人,我找到了解决问题的方法;

显然必须启用multidex,因为我已经习惯了很多方法/库。太糟糕了,logcat没有给我任何迹象表明这种情况正在发生,这导致了这个问题。

这个多指数是什么? Read here

如何启用multidex支持?

build.gradle

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
    }
}

dependencies {
    ...
    compile 'com.android.support:multidex:1.0.1'
    ...
}

为了向后兼容,请在主应用程序中添加:

@Override
protected void attachBaseContext(Context base)
{
    super.attachBaseContext(base);
    MultiDex.install(this);
}