运行应用程序时的空布局

时间:2014-03-24 17:35:11

标签: android android-layout layout android-xml

我正在尝试为我的Android应用程序创建一个线性布局。在这种线性布局中,还有另外两种布局,即相对布局和另一种线性布局。这两个布局的权重为1.当我在graphical_layout上查看我的布局时,一切看起来都很好。但是当我在手机或虚拟设备上运行我的应用程序时,我只看到一个空白的布局。

这应该是它的样子(它实际上是graphical_layout的截图):

enter image description here

这是它在虚拟设备和我的手机上的外观:

enter image description here

这是我的xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#EEEEEE"
    android:orientation="vertical"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    tools:context="xx.xx.counter.MainActivity">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2" >

        <ProgressBar
            android:id="@+id/progressBar2"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:progressDrawable="@drawable/cpb"
            android:rotation="270" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerInParent="true"
            android:text="@string/number"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="70sp" />
</RelativeLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="@string/button2"
        android:visibility="gone" />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:rotation="180" />
    <TextView 
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/number" />
</LinearLayout>
</LinearLayout>

以下是cpb.xml的代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape
        android:innerRadiusRatio="3.5"
        android:shape="ring"
        android:thicknessRatio="60.0"
        android:useLevel="false">
        <gradient
            android:startColor="#AAAAAA"
            android:centerColor="#AAAAAA"
            android:endColor="#AAAAAA"
            android:type="linear"/>
    </shape>
</item> 
<item android:id="@android:id/progress">
    <shape
        android:innerRadiusRatio="4"
        android:shape="ring"
        android:thicknessRatio="20.0">
        <gradient 
            android:startColor="#ff8800"
            android:centerColor="#ff8800"
            android:endColor="#ff8800"
            android:type="linear"/>
    </shape>
</item>
</layer-list>

如果我将父线性布局的高度和宽度从fill_parent或match_parent更改为wrap_content,则它看起来不像我想要的样子。但是当我运行应用程序时,我可以看到一些东西,所以我认为它不是onCreate() - Methode的问题。

那么我的布局有什么问题,我该怎么做才能让它看起来像我想看的那样?

3 个答案:

答案 0 :(得分:0)

我没有看到您的布局有任何问题。它适用于我的nexus 5手机。尝试更改

android:layout_height="0dp"

android:layout_height="wrap_content"

另外,请确保在Activity OnCreate

上有setContentView

答案 1 :(得分:0)

我也没有看到任何问题。

如果您使用的是重量,建议使用0dp宽度,但您可以尝试将weightSum属性添加到主LinearLayout。

android:weightSum="3"

答案 2 :(得分:0)

我找到了一个有效的解决方案。我不认为这是一个完美的,但它现在有效。

我将FrameLayout放在其他布局周围,以便我的代码结构现在看起来像这样:

   <FrameLayout>
        <LinearLayout>
            <RelativeLayout>
            </RelativeLayout>
            <LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </FrameLayout>

通过这个解决方案,我得到了一个警告,那就是LinearLayout,它实际上是我的主要布局,不是必需的。但我认为这是必要的,因为否则我不能使用layout_weight。

有人可以告诉我,为什么它现在正在运行但不是没有FrameLayout?