web-dev-qa-db-ja.com

TableRow内のボタンの配置

Androidアプリケーションを開発しています。

私はこれを持っています:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_width="fill_parent"
  Android:layout_height="200px"
  Android:orientation="vertical">
  <TextView
        Android:id="@+id/gameTitle"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:focusable="false"
        Android:focusableInTouchMode="false"
        Android:gravity="left"
        Android:layout_margin="5px"
        Android:text="aaaaa"/>
  <TextView
        Android:id="@+id/gameDescription"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:focusable="false"
        Android:focusableInTouchMode="false"
        Android:gravity="left"
        Android:layout_margin="5px"
        Android:typeface="sans"
        Android:textSize="16sp"
        Android:textStyle="bold"
        Android:text="dddddd"/>
  <TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/ButtonsTable"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <TableRow
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent">
            <Button
                Android:text="@string/yes"
                Android:id="@+id/playGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"/>
            <Button
                Android:text="@string/no"
                Android:id="@+id/noPlayGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

中央左側にplayGameボタンを配置し、中央右側にnoPlayGameボタンを配置したい。

これで、両方ともTableRowの左側に揃えて表示されます。

これどうやってするの?

ありがとうございました。

[〜#〜] edit [〜#〜]:完全なレイアウトとAshayによって提案された変更を追加しました。
2番目の編集
ソリューション
以下をTableLayoutに追加しました:Android:stretchColumns="0,1"。これでボタンは中央揃えになりましたが、全体の列を埋めています!!!

15
VansFannel

これが役に立てば幸いです:

<TableRow
    Android:id="@+id/tableRow1"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center_horizontal"
    Android:layout_width="wrap_content">
    <Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_horizontal"
        Android:text="@string/stringtxt1"></Button>
    <Button
        Android:id="@+id/button2"
        Android:layout_width="wrap_content"
        Android:text="@string/stringtxt2"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center|center_horizontal"></Button>
</TableRow>
21
Vale

私は自分のコードを投稿しました。他のユーザーが問題を解決するのに役立つことを願っています(中央のコンテンツ)。 2つのボタンをテーブルの行の中央に配置したかったので、この問題を解決するコードを次に示します。

プロパAndroid:strechColumns = "a、b .."でカンマ区切りのリストを使用して、どの列を拡大するかを示します

      <TableLayout
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/buttonGroup"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:stretchColumns="0,1" > 

        <TableRow>
            <Button
                xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:id="@+id/button1"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:text="@string/button1Name" 
                Android:layout_gravity="right"/>

            <Button
                xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:id="@+id/button2"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:text="@string/button2Name" 
                Android:layout_gravity="left"/>
        </TableRow>
    </TableLayout>

お役に立てば幸いです。私の英語でごめんなさい:/

9
Bobu

1つのボタンを1つの行の中央に配置するには:

<TableRow Android:id="@+id/rowNameHere"
          Android:layout_height="wrap_content"
          Android:layout_width="wrap_content"
          Android:gravity="center">
    <Button Android:id="@+id/btnDoStuff"
            Android:text="Do Stuff" />
</TableRow>

上記の回答を確認した後、各回答からいくつかのことを取得しましたが、これはうまくいきました。

9
dyslexicanaboko

ボタンを中央に配置するために、2つのダミーテキストビューを追加しました。

<TableRow>
    <TextView 
        Android:text=""
        Android:layout_weight=".25" 
        Android:layout_width="0dip"         
        />
    <Button 
        Android:id="@+id/buttonSignIn" 
        Android:text="Log In"
        Android:layout_height="wrap_content"
        Android:layout_weight=".50" 
        Android:layout_width="0dip" 
        />
    <TextView 
        Android:text=""
        Android:layout_weight=".25" 
        Android:layout_width="0dip"         
    />
</TableRow>
2
Vivek Iyer

この行を削除_<TableRow Android:layout_gravity="center">_そして_Android:fill_containt_を両方のテーブル行にheightwidth

EDITED ANSWER:さて、最後の投稿のスペルミスでごめんなさい

XMLでは、TableLayoutは不可能に思えます。 oncreateのコードでこのUIを設定する必要があります。 Javaファイルで、以下を使用してそれらを設定できます。

_playGame.setWidth(ScreenWidth()/2-var);
noPlayGame.setWidth(ScreenWidth()/2-var);
_

ここでvarを使用して、これら2つのボタン間の距離を10や30のように設定できます。また、XMLは次のように変化します。

_<TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/ButtonsTable"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <TableRow
            Android:layout_width="wrap_content"
            Android:layout_height="fill_parent"
            Android:gravity="center">
            <Button
                Android:text="yes"
                Android:id="@+id/playGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:gravity="center"/>
            <Button
                Android:text="no"
                Android:id="@+id/noPlayGame"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:gravity="center"/>
        </TableRow>
</TableLayout>
_

メソッドScreenWidth()は、これらのメソッドを通じて画面の幅を取得するために使用できます

_private int ScreenWidth() {
        DisplayMetrics dm=new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        String width=""+dm.widthPixels;
        return Integer.parseInt(width);
}
_
2
Ashay