我正在尝试为我的Android应用程序创建一个线性布局。在这种线性布局中,还有另外两种布局,即相对布局和另一种线性布局。这两个布局的权重为1.当我在graphical_layout上查看我的布局时,一切看起来都很好。但是当我在手机或虚拟设备上运行我的应用程序时,我只看到一个空白的布局。
这应该是它的样子(它实际上是graphical_layout的截图):
这是它在虚拟设备和我的手机上的外观:
这是我的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的问题。
那么我的布局有什么问题,我该怎么做才能让它看起来像我想看的那样?
答案 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?