0

我有一个包含 ImageView 的标题设计,它对于我的应用程序中的所有布局都很常见。我想设置某个按钮的 ImageView 可见 onclick。ImageView 必须在所有活动中可见。我正在使用.setVisibility(View.VISIBLE);,但它不适用于所有活动。

4

2 回答 2

1

有很多方法可以实现这个任务。一项简单的任务是使用ViewStub实现一个通用的标头。请按照以下步骤操作:

  1. 使用 ImageView 或任何其他小部件定义 header.xml。
  2. 现在将 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" />
    

  3. 定义一个 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);
        }
    }
    
  4. 现在将此 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 回答