Android是否有母版页概念,比如Struts中的.NET或Tiles概念,以便在所有页面上添加标题?

Android是否有母版页概念,比如Struts中的.NET或Tiles概念,以便在所有页面上添加标题?,android,android-layout,Android,Android Layout,我正在开发一个Android应用程序。在这个应用程序中,徽标栏显示在所有页面(活动)上,或者我们可以说它在所有页面上都有标题。 这个标志栏有几个图标,如主页、登录、通知等,点击这些图标就会执行相应的导航 例如,如果用户在应用程序中的任何位置并单击主页图标,他将导航到应用程序的主页 我能够通过编码将logobar.XML膨胀到我的所有活动中。但问题是我必须在所有页面上调用onClickListener来查找徽标栏中的所有图标。 这不是一种好的编程方式。 如何在不重复代码的情况下在所有其他活动中实现

我正在开发一个Android应用程序。在这个应用程序中,徽标栏显示在所有页面(活动)上,或者我们可以说它在所有页面上都有标题。 这个标志栏有几个图标,如主页、登录、通知等,点击这些图标就会执行相应的导航

例如,如果用户在应用程序中的任何位置并单击主页图标,他将导航到应用程序的主页

我能够通过编码将logobar.XML膨胀到我的所有活动中。但问题是我必须在所有页面上调用onClickListener来查找徽标栏中的所有图标。 这不是一种好的编程方式。 如何在不重复代码的情况下在所有其他活动中实现徽标栏活动? android有没有像.Net那样的母版页概念,或者像Struts那样的tiles概念


请引导我

编辑:好的,我知道了。也许他会帮助你


尝试将Tab小部件与tabactivity一起使用检查此链接,了解android的fragment和Tab用法。我认为对于较低版本,我们也可以使用这个。这就是链接所说的“您可以使用v4支持库,它提供了一个版本的片段API,兼容到甜甜圈。”

您必须用xml创建主布局,并且必须将其包含在其他应用程序中
您必须拥有它的布局。

有类似的布局,但仅在api 11+(3.2和Android 4.0.x冰淇淋三明治)上可用。它叫做actionbar()。

我使用XML文件完成了这项工作

我只是从XML文件创建运行时视图,并将其添加到活动布局中

我已经为此创建了一个方法

public static void setLoginview(Context ctx, RelativeLayout layout) {
    LayoutInflater linflater = (LayoutInflater) ctx
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View myView = linflater.inflate(R.layout.loginheader, null);    
    layout.addView(myView);
    try {
        layout.getChildAt(0).setPadding(0, 50, 0, 0);
    } catch (Exception e) {
    }
}

ctx是应用程序contetx,layout是我想添加该视图的布局。

解决方案非常简单

您需要将onCreate函数SetContentView中的“Activity”类扩展到基本xml布局,还需要覆盖基本Activity类中的SetContentView

例如:

1.使用以下代码创建“base_layout.xml”

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      android:background="#000000"
      android:padding="15dp" >
    <LinearLayout android:orientation="horizontal" android:background="#000000"
           android:layout_width="fill_parent" android:layout_height="wrap_content"
           android:minHeight="50dp" android:paddingLeft="10dp">
           <ImageView android:layout_width="wrap_content" android:id="@+id/ImageView01"
               android:adjustViewBounds="true" android:layout_height="wrap_content"
               android:scaleType="fitCenter" android:maxHeight="50dp" />
   </LinearLayout>
   <LinearLayout android:id="@+id/linBase"
     android:layout_width="fill_parent"
       android:layout_height="fill_parent" >
   </LinearLayout>
</LinearLayout>    

到目前为止,我注意到的唯一一件事是,当请求进度条(requestWindowFeature(Window.FEATURE\u undeterminate\u progress))时,这需要在调用super.onCreate之前完成。我认为这是因为在调用这个函数之前还不能绘制任何东西


这对我来说非常有用,希望您能在自己的编码中发现这一点。

谢谢您的回复,但选项卡布局并不能解决我的问题。我想使用我的标识栏作为标题栏或标题栏,而不是像标识栏上每个图标的不同选项卡一样。这应该提供标题而不是选项卡的外观。我正在使用android 2.1汉克斯AnDro开发我的应用程序。我认为这是我想要的,并且应该在我的应用程序中工作。是的,我正在这样做,但问题是如何在其他活动中使用主布局活动的所有功能(如在徽标栏的每个图标上单击事件),其中我包括主布局而不重复代码。目前,我必须对每页上的每个图标重复OnClickListener。@MANOJAGARWAL,因为您已经包含了布局,然后从该布局中按id查找视图并应用事件列表器。这很好。我已经在使用这种方法。但这种方法在所有页面上重复相同的代码,因为我的徽标栏被放置在所有页面中。我想要一种避免重复的方法,我只是在其他活动中调用我的母版页活动。super.onCreate(savedInstanceState);setContentView(R.layout.activity2);页脚=(页脚)findViewById(R.id.layoutFooter);footer.setActivity(此);
public class BaseActivity extends Activity {
    ImageView image;
    LinearLayout linBase;     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        super.setContentView(R.layout.base_layout);        
        image = (ImageView)findViewById(R.id.ImageView01);
        image.setImageResource(R.drawable.header);
        linBase = (LinearLayout)findViewById(R.id.linBase);
    }
    @Override
    public void setContentView(int id) {
        LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(id, linBase);
    }
}
public class SomeActivity extends BaseActivity {    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.some_layout);
       //rest of code
    }
}