我一直在寻找并找到许多可能的解决方案,以便在布局中居中使用textview。但没有一个对我有用。 我的textview位于TableLayout中,由以下xml描述:
<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方法),我无法将textview置于表格单元格的中心。
提前致谢
答案 0 :(得分:1)
首先有两种类型的重力。我认为你使用常规重力而不是布局重力。 您还可以在xml中创建视图,然后使用inflatrer然后添加。这样可以提供更清晰的代码。
编辑: 所以你太懒了,无法尝试布局inflater并听取建议,这里是代码:
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);
}