web-dev-qa-db-ja.com

Androidでボタンの幅を設定

Androidボタンに固定幅を設定するにはどうすればよいですか?固定幅を設定しようとするたびに、現在の親(RelativeView)を埋めます。XMLは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout Android:id="@+id/relativelayout" Android:layout_width="fill_parent" Android:layout_height="fill_parent" xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <EditText Android:layout_height="wrap_content" Android:editable="false" Android:layout_width="fill_parent" Android:id="@+id/output"></EditText>

    <Button Android:layout_height="wrap_content" Android:id="@+id/Button01" Android:layout_below="@id/output" Android:text="7" Android:layout_width="wrap_content"></Button>
    <Button Android:layout_below="@id/output" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/Button02" Android:layout_toRightOf="@+id/Button01" Android:text="8"></Button>
    <Button Android:layout_below="@id/output" Android:layout_height="wrap_content" Android:layout_width="wrap_content" Android:id="@+id/Button03" Android:layout_toRightOf="@+id/Button02" Android:text="9"></Button>
</RelativeLayout>

固定幅をどのように設定しますか?
更新
互いに同じサイズで、ビュー全体の1/3(ポートレート)が必要なボタンがいくつかあるとします。次に、幅が2倍のボタンが必要です。次に、2倍の高さのボタン。手動でサイズ変更するこの他の方法をどのように実現できますか?

16
Mohit Deshpande

目的を達成するには、LinearLayoutとweightsumを使用できます。たとえば、WeightSumを9に設定できます。3つのボタンの重さをそれぞれ1つに設定した場合。それらは場所の1/3を占め、別のオブジェクトに2を置くことができます。このオブジェクトは、他のオブジェクトの2倍の大きさになります。

http://developer.Android.com/reference/Android/widget/LinearLayout.html#setWeightSum(float)

編集:これが正しく動作するように追加したいので、幅または高さを0pxに設定する必要があります(水平レイアウトか垂直レイアウトかに応じて)。

13

_Android:layout_width="wrap_content"_の代わりに、たとえば_Android:layout_width="20px"_のような固定ピクセルサイズを使用するか、より良い方法:_Android:layout_width="20dp"_

コードで幅をプログラムで設定することもできます:Button.setWidth(int width)

アップデートについて:

それが良い解決策かどうかはわかりませんが、私は働いています。使用できます

_ DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);
_

画面の解像度を読み取り、metrics.widthPixelおよびmetrics.heightPixelに従ってボタンのサイズを設定します

12

MinWidthとminHeightを使用して、ボタンの幅と高さを設定します。

<Button Android:layout_height="wrap_content"
 Android:id="@+id/Button01" 
 Android:layout_below="@id/output" 
 Android:text="7" 
 Android:minWidth="100dp">
</Button>
6

ボタンを動的に設定する最良かつ最も簡単な方法は

 Button index=new Button(this);
 int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());             
 int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());

ピクセル単位の高さと幅px。 45はdpの高さで、42はdpの幅です。

 index.setLayoutParams(new <Parent>.LayoutParams(width, height));

そのため、たとえば、TableLayout内のTableRow内にボタンを配置した場合、TableRow.LayoutParamsとして持つ必要があります。

 index.setLayoutParams(new TableRow.LayoutParams(width, height));
3
Ali Kahoot

追加 Android:minwidthそのコードの行。

0
Rathiga Jesika