我正在尝试制作一个按钮,它会像浮动动作按钮一样处于待机状态,尽管它可能存在于任何上下文中,但是我应该支持我的所有活动,我怎样才能实现这一点请给我一个链接或给我一个想法
答案 0 :(得分:2)
class ActivityOne extends BaseActivity{
@Override
protected View childView(){
return getLayoutInflator().inflate(R.layout.activity_one, null);
}
}
class ActivityTwo extends BaseActivity{
@Override
protected View childView(){
return getLayoutInflator().inflate(R.layout.activity_two, null);
}
}
public abstract class BaseActivity extends Activity{
protected abstract View childView();
@Override
protected void onCreate(SavedInstanceState savedInstanceState){
super.onCreate(savedInstanceState);
RelativeLayout baseLayout;
ViewStub stub;
baseLayout = (RelativeLayout)
this.getLayoutInflater().inflate(R.layout.layout_base, null);
stub = (ViewStub) baseLayout.findViewById(R.id.base_content_stub);
// Replace viewstub with content.
baseLayout.removeView(stub);
baseLayout.addView(childView(), stub.getLayoutParams());
super.setContentView(baseLayout);
}
}
<强> layout_base.xml 强>
<RelativeLayout
....
>
<ViewStub
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:id="@+id/base_content_stub"/>
<Button
.... // <---- common to all activities
/>
</RelativeLayout>
答案 1 :(得分:0)
每次活动都不可能使用相同的按钮。您可以使用相同的布局,但每次创建新活动时都必须重新创建按钮。你可能可以避免这种情况,如果你用动作栏做了一些花哨的东西,坦率地说不值得。我建议你看看使用片段而不是活动,在这种情况下你可以让你的活动布局文件看起来像这样:
<LinearLayout android:id="@+id/fragment_container"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="coop.nisc.intern2016.ui.MainActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/button_text" />
<RelativeLayout
android:id="fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
然后,您可以使用FragmentManager
将片段放入fragment_container
。代码看起来像这样:
private void showCustomFragment() {
FragmentManager fragmentManager = getSupportFragmentManager();
customFragment = new customFragment();
fragmentManager.beginTransaction()
.replace(R.id.fragment_container, customFragment, customFragment.TAG)
.commit();
}