我有一个包含 ImageView 的标题设计,它对于我的应用程序中的所有布局都很常见。我想设置某个按钮的 ImageView 可见 onclick。ImageView 必须在所有活动中可见。我正在使用.setVisibility(View.VISIBLE);
,但它不适用于所有活动。
问问题
355 次
2 回答
1
有很多方法可以实现这个任务。一项简单的任务是使用ViewStub实现一个通用的标头。请按照以下步骤操作:
- 使用 ImageView 或任何其他小部件定义 header.xml。
现在将 ViewStub 放在其他活动的 xml 布局的布局中,例如:main.xml
<!-- Included header.xml here --> <ViewStub android:id="@+id/vsHeader" android:inflatedId="@+id/header" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout="@layout/header" /> <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="@string/txtDemo" />
定义一个 BaseActivity 类,您可以从中控制 ImageView 的可见性。
abstract public class BaseActivity extends Activity{ protected View header; protected View footer; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); } @Override public void setHeader(Activity activity, boolean visible) { if (visible) { activity.findViewById(R.id.vsHeader).setVisibility(View.VISIBLE); header = findViewById(R.id.header); } else activity.findViewById(R.id.vsHeader).setVisibility(View.GONE); } }
现在将此 BaseActivity 扩展到您的所有其他 Activity,以便您可以访问这些方法。
因此,在上面的第 3 步中,您可以调用 setHeader() 方法,并将 true/false 作为可见值。您可以在此处查看详细示例:Android – ViewStub 示例
于 2012-12-13T05:47:45.030 回答
0
您可以创建一个类“MyHeaderVisibility”,其中包含一个静态布尔变量“imagevisibility”。为依赖此布尔变量的所有活动设置标题图像的可见性。你应该很高兴。
class MyHeaderVisibility{
static boolean imagevisibility = false;
}
在按钮单击事件'上,您可以通过以下方式更改可见性:
Button b = (Button) findViewById(R.id.yourbuttonid);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyHeaderVisibility.imagevisibility = true;
}
}
于 2012-12-13T05:31:09.280 回答