ImageViewを含むヘッダーデザインがあり、アプリケーションのすべてのレイアウトに共通です。ボタンをクリックするとImageViewが表示されるように設定したい。ImageViewは、すべてのアクティビティで表示される必要があります。私は使用して.setVisibility(View.VISIBLE);
いますが、すべてのアクティビティで機能しているわけではありません。
質問する
355 次
2 に答える
1
このタスクを実装するには多くの方法があります。簡単なタスクの 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" />
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); } }
この 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 に答える