2011-10-19 34 views
0

私は、レイアウト内でテキストビューをセンタリングするためのさまざまな解決策を探しています。しかし誰も私のために働いていません。 私のTextViewには、次のXMLで記述されてTableLayoutである:TextView layout_gravityがプログラムで動作しない

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/schedule_main_holder"> 
    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:stretchColumns="0" 
     android:id="@+id/schedule_table_entry"> 
    </TableLayout> 
</LinearLayout> 

新しいのTableRowを作成し、それにのTextViewとListViewコントロールを追加...しかし、TextViewにはしていている私は何をやっています垂直にセンタリングされます。そのために私はやっています:

TableRow row = new TableRow(this); 

     TextView tview = new TextView(this); 
     tview.setText("Wednesday"); 
     TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL); 
     tview.setLayoutParams(layoutParams); 
     row.addView(tview); 

問題は、TextViewは常にセルの上にあり、中間ではありません。 私は組み合わせの組み合わせを試しました(FrameLayoutメソッドは別のレスポンスで記述されています)、テキストセルをテーブルセルの中央に配置することができません。事前に

おかげ

答えて

1

まずgravity.Iの2種類があり、あなたは、通常の重力ではないレイアウト1を使用してだと思います。 秒、xmlでビューを作成してからinflatrerを使用して追加することもできます。これにより、より洗練されたコードが得られます。

編集:実際にレイアウトインフレータを試してみて、アドバイスに耳を傾けるに だからあなたが面倒、ここでのコードは次のとおりです。

main.xml

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:stretchColumns="0" 
android:id="@+id/schedule_table_entry"> 
</TableLayout> 

myrow.xml

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 
<TextView 
    android:id="@+id/text" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_gravity="center" /> 
</TableRow> 

TestActivity

public class TestActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    LayoutInflater inflater = getLayoutInflater(); 
    TableRow row = (TableRow) inflater.inflate(R.layout.myrow, null); 
    TextView text = (TextView) row.findViewById(R.id.text); 
    text.setText("I did all your work... smart even"); 

    TableLayout table = (TableLayout) findViewById(R.id.schedule_table_entry); 
    table.addView(row); 
} 
+0

返信いただきありがとうございますが、私はすでにインフレータメソッドを試しており、layout_gravityは単純に無視されています。 layout_gravityが必要なのは、テキストビューをテキスト自体ではなくセルの中央に配置したいからです。少なくとも私はsetGravityを試しましたが、うまくいかず、textviewがxmlで定義されたときにlayout_gravityが機能しました。 –

+0

提案を行うための更新された応答..提案されています。 – Warpzit

+0

私はちょうど試みた応答のためにありがとう、それは動作します。私はinflateアプローチを試みましたが、TableRowではなく、TextViewを直接膨張させました。それは問題だったかもしれません。 –