0

我有一个这样的 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带有id的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));

谁能给个提示=

4

2 回答 2

1

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

您将正常访问视图:

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

我相信,整个将视图放在一起的部分是在编译时完成的。因此,您可以像平常对待 xml 布局中的视图一样对待它。

于 2012-07-23T10:08:13.330 回答
0

对,如果提供的布局文件名是 horz_scroll_app ,它将被完整包含。查看Romain Guy 的这篇文章以 获得关于包含的清晰解释。

于 2012-07-23T10:03:21.113 回答