包含布局的常用代码 - (示例ActionBar)

时间:2012-03-30 07:01:41

标签: android android-widget onclick custom-component android-actionbar

我对包含布局感到困惑:

  1. 假设我为名为actionbar.xml
  2. 的操作栏制作了布局
  3. 我将其包含在我的所有其他布局中
  4. 现在我应该如何以及在哪里编写动作栏的Java代码?如果我在onclick中写main.java - 函数?

    我怎样才能使用second.java中存储的第二个活动?除了创建定义onclick for actionbar的类的对象之外,还有其他方法吗?

3 个答案:

答案 0 :(得分:2)

如果你有action_bar.xml这样的布局:

<?xml version="1.0" encoding="utf-8"?>
<com.your.package.ui.widget.ActionBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/actionBar"
    android:layout_width="fill_parent"
    android:layout_height="58dip"
    android:background="@drawable/action_bar_background" >

<ImageButton
        android:id="@+id/actionBarOpenButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/transparent"
        android:contentDescription="open button"
        android:src="@drawable/action_bar_open_button" />

</com.your.package.ui.widget.ActionBar>

然后,您将在包com.your.package.ui.widget

中拥有一个类

称为ActionBar.java,如下所示:

package com.your.package.ui.widget;

public class ActionBar extends LinearLayout implements OnClickListener {

    public ActionBar(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ActionBar(Context context) {
        super(context);
    }

      @Override
      protected void onFinishInflate() {
          super.onFinishInflate();

          findViewById(R.id.actionBarOpenButton).setOnClickListener(this);
      }

    @Override
        public void onClick(View v) {                
            switch (v.getId()) {
            case R.id.actionBarOpenButton:
                     // Do something
                  break;
                default:
                 break;
            }
        }
}

然后你将它包含在另一个布局中,例如`activity_main.xml',如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include layout="@layout/action_bar" />

    <!-- Rest of your layout -->

</LinearLayout>

然后,您可以将其包含在您想要的任何Actvitity中,并且您的自定义窗口小部件将在任何地方执行相同的onClick事件。

答案 1 :(得分:0)

如果您想在所有活动中看到一些内容,那么您可以通过以下方式实现:创建标题XML和标题活动。

在Header Activity中编写有关Header XML的代码,然后该应用程序的所有其他Activity将从Header Activity扩展。

有关示例,您可以看到 how do I create a header or footer button bar for my android application

答案 2 :(得分:0)

有实现这一目标的方法。您应该为操作栏实现一个interphase回调函数。