0

ImageViewを含むヘッダーデザインがあり、アプリケーションのすべてのレイアウトに共通です。ボタンをクリックするとImageViewが表示されるように設定したい。ImageViewは、すべてのアクティビティで表示される必要があります。私は使用して.setVisibility(View.VISIBLE);いますが、すべてのアクティビティで機能しているわけではありません。

4

2 に答える 2

1

このタスクを実装するには多くの方法があります。簡単なタスクの 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. ImageView の可視性を制御できる BaseActivity クラスを 1 つ定義します。

    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 を他のすべてのアクティビティに拡張して、それらのメソッドにアクセスできるようにします。

したがって、上記の 3 番目のステップでは、true/false を可視値として setHeader() メソッドを呼び出すことができます。ここで詳細な例を確認できます: Android – ViewStub の例

于 2012-12-13T05:47:45.030 に答える
0

「imagevisibility」などの静的ブール変数を保持する「MyHeaderVisibility」などのクラスを作成できます。このブール変数に依存するすべてのアクティビティのヘッダー イメージの可視性を設定します。準備万端です。

    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 に答える