从资源XML文件

时间:2015-05-14 16:43:19

标签: java android xml android-layout

第一:我想做什么?答:我在尝试使用我自己的任何.java代码更改而不是时,尝试进行基本布局重新洗牌。

这是我的activity_main.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/black"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"
    android:orientation="@string/wrapper_orientation"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="@string/image_width"
        android:layout_height="@string/image_height"
        android:layout_weight="@string/image_weight"
        android:background="@drawable/customborder"
        />

    <LinearLayout
        android:layout_width="@string/content_width"
        android:layout_height="@string/content_height"
        android:layout_weight="@string/content_weight"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:background="@drawable/customborder"
            />
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:background="@drawable/customborder">
        </RelativeLayout>
    </LinearLayout>
</LinearLayout>

我在/ values-land和/ values-port都有一个strings.xml文件,这里的端口是一个例子:

<resources>
    <string name="wrapper_orientation">vertical</string>
    <string name="image_width">fill_parent</string>
    <string name="image_height">0dp</string>
    <string name="image_weight">.45</string>
    <string name="content_width">fill_parent</string>
    <string name="content_height">0dp</string>
    <string name="content_weight">.55</string>
</resources>

这在模拟器中工作正常,但是当我将其发送到手机时,应用程序会因通货膨胀而关闭并出现以下错误:

android.view.InflateException: Binary XML file line #1: Error inflating class <unknown>
Caused by: java.lang.NumberFormatException: Invalid int: "vertical"

我认为这是因为它检索资源时,返回了错误的类型。但我不确定为什么或如何绕过它。两个小时的谷歌搜索并没有多大帮助。

另一个注意事项:如果我将方向硬编码为垂直方向,则表示我的第一个ImageView没有layout_width,所以我非常确定我至少在正确的轨道上。< / p>

我是不是太喜欢这里的傻瓜,希望能够轻易地完成我之后的事情?任何帮助赞赏。我使用的是最新的Android Studio,而我的minSDK是14.我的主要.java文件在这一点上确实是标准的膨胀,这个概念证明是我迄今为止所做的全部尝试:< / p>

setContentView(R.layout.activity_main);

提前致谢!

模拟器的Pic(链接,boo,无代表)工作正常:

http://i.imgur.com/1cCJsYR.png

1 个答案:

答案 0 :(得分:0)

在xml中,垂直和水平方向指定不是字符串,而是预定义的整数常量。您正在采取不正确的方法解决此问题。更好的选择是使用具有适当限定符的资源目录中定义的多个布局文件。因此,layout-port中将有一个layout-land和一个res文件夹,其中布局xml文件在每个文件中定义了相同的名称,并对每个方向的布局进行了相应的更改。您可以在此处阅读有关资源限定符的更多信息:

Supporting Multiple Screens