2011-12-22 7 views
0

私は彼らがうまく画面に収まるようにするために、実行時に私のボタンのサイズを変更したいのですが - ので、ボタンの幅を設定するために、私がやっている -Androidのボタンの最小高さに厳しい制限はありますか?

int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
int buttonWidth = (screenWidth*2)/3; 

ボタンをループしてそれぞれのボタンを.setWidth(buttonWidth);と呼びます。

同じ方法で高さを変更したいのですが、エミュレータでアプリケーションを実行すると、それをより大きな値に設定しない限り、高さは変更されません。私は同じループに.setHeight(buttonHeight);を使用

int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); 
int buttonHeight = (screenHeight-60)/14; 

値が非常に大きい場合を除き、しかし、何もする表示されません。私はテキストのサイズや最小の高さを減らそうとしましたが、これは効果がないようです。

+0

明確にするために、ボタンの幅を変更することが正しく機能しています。 – Eilidh

+0

どのレイアウトを使用していますか? – Kerry

+0

LinearLayout、申し訳ありません。 XMLファイルで手作業で小さなものに設定できましたが、実行時に動的に設定できませんでした。 – Eilidh

答えて

0

よく、なぜsetHeightが正しく機能していないのか分かりませんが、サイジングの問題全体にアプローチするより良い方法があります。

ボタンの幅を画面の幅の3分の2にしたい場合は、水平のLinearLayoutにネストし、空白のビューとボタンを作成し、もう1つの空白のビューですべてのfill_parent幅のためにlayout_weightを以下のように設定してください:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical"> 
    <LinearLayout android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:orientation="horizontal"> 
      <View android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_weight="2"/> 
      <Button android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_weight="1" 
       android:text="Button" 
       android:id="@+id/button"/> 
      <View android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_weight="2"/> 
    </LinearLayout> 
</LinearLayout> 

個人的には、私はJavaコードで上記のレイアウトを変更することを好みます。私はそれを試していないが、あなたは同じことを高さに対してもできると確信しているが、代わりに高さにfill_parentの縦型レイアウトがある。

0

はい。私の経験では、minHeight = 0に設定しない限り、XMLの場合でも、ボタンの高さを特定の値を超えて減らすことはできません。