0

私が見つけて答えることができないように見えるちょっとした一般的な質問。

アクティビティに線形レイアウトのスタート ボタンがあるとします。ユーザーが開始を押すと、停止という別のボタン (ラベルを変更するだけでなく) に置き換えたいと思います。Web サイトでは、1 つのボタンを非表示にしてもう 1 つのボタンを表示するだけです (または、1 つのボタンをフェードアウトさせ、不透明度をゼロにして非表示にし、もう 1 つのボタンを表示してフェードインさせます)。

これは通常、Android でどのように行われますか? フラグメント (1 つのボタンの場合) や相対レイアウトなど、さまざまな提案を読みましたが、ビューを同じサイズの別のビューに置き換えて、後でアニメーション化することもできます。

4

4 に答える 4

1

これはあなたを助けることができると思います。

public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button button_1 = (Button) findViewById(R.id.button1);
        final Button button_2 = (Button) findViewById(R.id.button2);
        button_2.setVisibility(View.INVISIBLE);
        button_1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                button_1.setVisibility(View.INVISIBLE);
                button_2.setVisibility(View.VISIBLE);
            }
        });
        button_2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                button_2.setVisibility(View.INVISIBLE);
                button_1.setVisibility(View.VISIBLE);
            }
        });
    }

ボタン 2 を動的に作成する場合は、次を使用できます

        RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout1);
        Button button_2= new Button(getApplicationContext());
        button_2.setText("button 2");
        button_1.setVisibility(View.INVISIBLE);
        layout.addView(button_2, button_1.getLayoutParams());

それ以外の

final Button button_2 = (Button) findViewById(R.id.button2);

レイアウトが必要な場合は、それも投稿できます。

于 2013-10-29T10:26:17.060 に答える
1

できることの 1 つは、たとえば Relativelayout を使用してボタンをオーバーレイし、ボタンが完全に整列するようにすることです (たとえばandroid:layout_alignLeft、上、下、右を設定することによって)。次に、そのうちの 1 つの可視性を に設定しVISIBLE、他のものをINVISIBLE(ビューは非表示ですが、レイアウトのためにスペースを占有します) またはGONE(ビューは非表示で、レイアウトのためにスペースを必要としません) に設定します。

ユーザーが 1 つのボタンをクリックすると、可視性が変更されます。ここでは、言及したフェードイン/アウトなど、必要なアニメーションを適用することもできます.

ただし、ボタンのラベルを変更し、アクティビティで維持できる状態に基づいて処理する必要があるようです。たとえば、最初はスタート ボタンで、次に停止ボタンです。これはプログラムがはるかに簡単で、高速です。

于 2013-10-29T10:00:39.870 に答える
1

1 つのビューを非表示にするには、 setVisibility(View.GONE) を呼び出すだけで、そのビューがレイアウトにないかのように表示されます。ビューを表示するには、setVisiblity(View.VISIBLE) を呼び出します。

于 2013-10-29T10:00:43.697 に答える
1

これは、1 つのレイアウトで 2 つのコンポーネント (例: Button と Button) で管理できます。1 つはパラメータ visibility="gone" と 1 つの visibility="visible" を持ちます。したがって、コードでこの値を変更するだけです。

btnFirst.setVisibility(View.VISIBLE);
btnSecond.setVisibility(View.GONE);
于 2013-10-29T10:02:29.527 に答える