我正在开发Android应用程序。在此应用程序中,Logo栏显示在所有页面(活动)上,或者我们可以说它在所有页面上都有标题。 这个徽标栏有很少的图标,如主页,登录,通知等,点击这些图标对应的导航将执行。
例如,如果用户在应用程序中的任何位置并单击主页图标,则他将导航到应用程序的主页。
我可以通过编码将logobar.XML扩展到我的All Activity中。但问题是我必须在Logo Bar的所有图标的所有页面上调用onClickListener。 这不是一个好的编程方式。 如何在不重复代码的情况下在所有其他活动中实施徽标栏活动? Android中是否有像Struts中那样的.Net或tile概念中的任何Master Page概念?
请指导我。
答案 0 :(得分:1)
编辑:好吧,我明白了。可能this answer会帮助你。
尝试使用Tab小部件和tabactivity检查此链接以使用片段和标签http://developer.android.com/reference/android/app/TabActivity.html for android。我认为对于较低版本我们也可以使用它。这就是链接所说的 - “你可以使用v4支持库,它提供了与DONUT兼容的Fragment API版本。”
答案 1 :(得分:1)
你必须在xml中创建masterLayout,并且必须将它包含在另一个中 你必须拥有它的布局。
答案 2 :(得分:1)
解决方案很简单。
您需要将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>
2.创建“BaseActivity.java”
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
}
}
到目前为止我唯一注意到的是,当请求进度条(requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS))时,需要在调用super.onCreate之前完成。我认为这是因为在调用此函数之前还没有任何东西可以绘制。
这对我很有用,希望你会发现这对你自己的编码很有用。
答案 3 :(得分:0)
有类似的东西,但仅适用于api 11+(3.2和Android 4.0.x冰淇淋三明治)。它叫做动作栏(http://developer.android.com/reference/android/app/ActionBar.html)。
答案 4 :(得分:0)
我使用XML文件完成了这项工作。
我只是从XML文件创建运行时视图,并将其添加到Activity布局。
我为此创建了方法
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是我想要添加该视图的布局。