1

ボタンが水平に配置された LinearLayout、TextViews が水平方向に配置された LinearLayout、gridview および TextView を使用したアクティビティがあります。最初の LinearLayout には 3 つのボタンがあり、そのうちの 1 つは最初は可視性が「GONE」に設定されています。LinearLayout は、最初は 2/28 の重みを持つ必要がありますが、3 番目のボタンが表示されると、完全に再形成されます。また、これをより大きな画面でテストすると、プロポーションは同じままで、すべてが完全に機能することにも言及します. 使用されるドローアブルは、角とストロークが丸みを帯びた単純な形状です。

    <!-- this button is initially set as GONE and then it changes his height -->
            <Button 
                android:id="@+id/previous"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="end"
                android:gravity="center"
                android:background="@drawable/button"
                android:layout_marginRight="10dp"
                android:text="@string/previous"
                android:textColor="#606060"
                android:textStyle="bold"
                android:textSize="20sp"
                android:hint="Previous"/>

<!-- This button is visible from the very beginning, with the correct height -->
            <Button 
                android:id="@+id/next"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_gravity="end"
                android:gravity="center"
                android:background="@drawable/button"
                android:text="@string/next"
                android:textColor="#606060"
                android:textStyle="bold"
                android:textSize="20sp"
                android:hint="Next"/>
            </LinearLayout>

プログラムで可視性を設定したことを述べましたが、それは関連性があります。

_previous.setVisibility(GONE);

そしてそれぞれ

_previous.setVisibility(VISIBLE);

なぜこれが起こっているのか、どうすれば修正できますか?

私のアイデアをよりよく表す 2 枚の写真を 次に示します。 Img1 Img2 ありがとうございます。

4

2 に答える 2

1

LayoutParams を取得し、高さを画面の 2/28 に設定することで問題を解決できました。以下はソースコードです。

DisplayMetrics _metrics = getResources().getDisplayMetrics();
int _height = _metrics.heightPixels; //height of the screen

LayoutParams _layoutParamsButton = (LayoutParams) _previous.getLayoutParams(); 
_layoutParamsButton.height = _height/28*2;
_previous.setLayoutParams(_layoutParamsButton);     
于 2013-07-04T12:02:17.293 に答える
0

意味がわかりません

_previous.setVisibility(GONE); and respectively _previous.setVisibility(VISIBLE);

View.GONEボタンをで非表示にし、 で表示することを意味していると思いますView.VISIBLE

View.GONEとの違いが分かりますView.INVISIBLEか?

View.GONEボタンが存在しなかったかのように、レイアウトがそれ自体を測定します。 View.INVISIBLEレイアウトはボタンを含めてそれ自体を測定しますが、画面には表示しません。View.GONE最初に に設定し、次に に設定すると、View.VISIBLEレイアウト全体が再測定され、再描画されます。

あなたの質問を理解していなくても、コードでView.INVISIBLEandView.VISIBLEを使用する必要があると思います。

android:visibility="invisible"また、初期状態の XML で使用する必要があります。

于 2013-07-03T17:54:58.270 に答える