【问题标题】:Common code for include layout - (Example ActionBar)包含布局的通用代码 - (Example ActionBar)
【发布时间】:2012-04-13 20:48:45
【问题描述】:

我对包含布局感到困惑:

  1. 假设我为一个名为 actionbar.xml 的操作栏做了一个布局
  2. 我将此添加到我的所有其他布局中

现在我应该如何以及在哪里为操作栏编写 Java 代码?如果我在说main.java 中写onclick-函数?

我将如何在存储在second.java 中的第二个活动中使用相同的内容?除了在定义了onclick for actionbar 的类的对象之外,还有其他方法吗?

【问题讨论】:

  • 请清楚您的问题
  • 发布你的Actionbar的XML代码,我们可以解释

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


【解决方案1】:

如果您有这样的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>

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

【讨论】:

    【解决方案2】:

    有办法实现这一点。你应该为你的actionbar实现一个interphase回调函数。

    【讨论】:

      【解决方案3】:

      如果您想让某些内容在您的所有活动中可见,那么您可以通过以下方式做到这一点:创建 Header XML 和 Header ACTIVITY。

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

      例如,您可以查看 how do I create a header or footer button bar for my android application

      【讨论】:

        猜你喜欢
        • 2015-01-17
        • 1970-01-01
        • 2012-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 1970-01-01
        • 2016-05-01
        相关资源
        最近更新 更多