0

我有:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activityLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ColorViewerActivity" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        // skip it
    </TabHost>

    <TextView
        android:id="@+id/decDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@android:id/tabhost"
        android:layout_centerHorizontal="true"
        android:gravity="center_vertical|center_horizontal"
        android:text="222"
        android:textSize="19sp" />

    <LinearLayout
        android:id="@+id/panelLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_margin="1dip"
        android:orientation="vertical" >

    </LinearLayout>

    <TextView
        android:id="@+id/hexDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/decDescription"
        android:layout_alignRight="@+id/panelLayout"
        android:layout_below="@android:id/tabhost"
        android:text="111"
        android:textSize="14sp" />

</RelativeLayout>

如果我把最后一个放在TextView (id=hexDescription)倒数之前,LinearLayout (id=panelLayout)我会得到例外。来自 LogCat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{   com.gmail.leonidandand.colorviewer/com.gmail.leonidandand.colorviewer.ColorViewerActivity}:
java.lang.ClassCastException: android.widget.LinearLayout

可能是什么问题呢?

对不起我的英语不好。

谢谢

4

3 回答 3

1

尝试重新安排下面的东西

android:layout_alignBottom="@+id/decDescription"
android:layout_alignRight="@+id/panelLayout"
android:layout_below="@android:id/tabhost"

可能会发生错误,因为您将其对齐在 decDescription 的底部和 tabhost 的下方

于 2013-04-30T19:23:10.053 回答
1

Tabhost 需要带有 id 的 TabWidget。这是我使用您的 xml 布局时 lint 警告的内容。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activityLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ColorViewerActivity" >
<TabHost 
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>
</TabHost>

<TextView
    android:id="@+id/decDescription"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@android:id/tabhost"
    android:layout_centerHorizontal="true"
    android:gravity="center_vertical|center_horizontal"
    android:text="222"
    android:textSize="19sp" />

<LinearLayout
    android:id="@+id/panelLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_margin="1dip"
    android:orientation="vertical" >

</LinearLayout>

<TextView
    android:id="@+id/hexDescription"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/decDescription"
    android:layout_alignRight="@+id/panelLayout"
    android:layout_below="@android:id/tabhost"
    android:text="111"
    android:textSize="14sp" />

   </RelativeLayout>

TabHost 有一个 tabWidget 和一个 FrameLayout。

从图形布局捕获的快照

在此处输入图像描述

http://www.androidhive.info/2011/08/android-tab-layout-tutorial/的工作示例

于 2013-04-30T19:28:56.987 回答
1

这样做是因为您指示它应该相对于LinearLayout. 因此,您需要在要将其定位到的元素之后声明它。如果你不声明

android:layout_alignRight="@+id/panelLayout"

在你的十六进制中TextView,那没关系。这是因为当它绘制它时,它会看到该属性,并且由于尚未绘制该layout属性,因此无法找到相对于它的位置idview

于 2013-04-30T19:14:54.187 回答