包含来自其他布局android的对象

时间:2012-07-23 09:58:40

标签: android

我有一个像这样的xml布局文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:id="@+id/tabBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#474747"
    android:orientation="horizontal" >

    <ImageButton
        android:id="@+id/BtnSlide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@null"
        android:src="@drawable/lin" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="SteriaFIT Mobile"
        android:gravity="center"
        android:paddingLeft="12dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

<RelativeLayout
android:background="#41413F"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
    <LinearLayout
        android:id="@+id/some_layout_item"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

</LinearLayout>

<View
    android:layout_below="@id/some_layout_item"
    android:layout_width="fill_parent"
    android:layout_height="5dip"
    android:background="@drawable/drop_shadow">
</View>

<ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content"
    android:background="#FFFFFF" android:cacheColorHint="#FFFFFF">
</ListView>


<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="To Next Activity" />

我只想将此文件中的tabBar布局放到另一个xml布局文件中,我这样做是通过@+id这样包含的:

<include android:id="@+id/tabBar" layout="@layout/horz_scroll_app" />

但在我看来,这行代码将包含整个布局文件?

修改

应该提一下,此方法还会为Button提供身份button1

编辑2

好的,所以将tabBar放在一个新的布局文件中之后:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/tabBar"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="#474747"
  android:orientation="horizontal" >

    <ImageButton
        android:id="@+id/BtnSlide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@null"
        android:src="@drawable/lin" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="SteriaFIT Mobile"
        android:gravity="center"
        android:paddingLeft="12dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

并将其包含在我的原始xml布局中,如下所示:

 <include  layout="@layout/tab_bar" android:id="@+id/tabBar" />

在我看来,我无法在我的OnClickListener布局中向ImageButton注册任何tabBar。我试图做的事情:

 View app = inflater.inflate(R.layout.tab_bar, null);
 ViewGroup tabBar = (ViewGroup) app.findViewById(R.id.tabBar);

btnSlide = (ImageButton) tabBar.findViewById(R.id.BtnSlide);
btnSlide.setOnClickListener(new ClickListenerForScrolling(scrollView, menu));

任何人都可以给我一个提示=

2 个答案:

答案 0 :(得分:1)

Include用于将整个xml文件包含到当前布局中。如果您只想要tabBar路径,那么将它们放入一个单独的布局文件中,然后将它们包含在原始视图中。

您将正常访问该视图:

LinearLayout tabBar = (LinearLayout) findViewById(R.id.tabBar);
ImageButton btnSlide = (ImageButton) tabBar.findViewById(R.id.BtnSlide);

我相信,将整个视图放在一起的部分是在编译时完成的。因此,您可以按照通常的方式对待xml布局中的视图。

答案 1 :(得分:0)

是的,如果提供的布局文件名是horz_scroll_app,则将整体包含在内。 结帐this post by Romain Guy以获得有关包含的明确说明。