0
时,我有一个XML布局看起来像这样:使用“toRightOf”编程充气布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_weight="0.1"
android:text="1"/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/child"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<!-- Define these into code
<TextView android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="1"/>
<TextView android:id="@+id/second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/first"
android:layout_marginLeft="5dp"
android:textSize="20sp"
android:text="1"/>-->
</RelativeLayout>
<TextView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_weight="0.1"
android:text="1"/>
</LinearLayout>
内LinearLayout
的TextView
s的注定不会被改变。 RelativeLayout
也由TextView
组成,它们彼此对齐5dp
。与父布局的不同,它们需要在我的Java活动中定义。这是我曾尝试:
private View getGeneratedView(String[] texts) {
LayoutInflater inflater =
(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View parentLayout = inflater.inflate(R.layout.parent, null);
RelativeLayout childLayout = (RelativeLayout) parentLayout.findViewById(R.id.child);
Integer lastViewId = null;
for (String text: texts) {
TextView displayedText = new TextView(this);
displayedText.setText(text);
displayedText.setTextSize(20);
RelativeLayout.LayoutParams params =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
if (lastViewId != null) {
params.addRule(RelativeLayout.RIGHT_OF, lastViewId);
params.leftMargin = 5;
}
displayedText.setLayoutParams(params);
lastViewId = displayedText.getId();
childLayout.addView(displayedText);
}
return parentLayout;
}
但是上面的代码确实是把所有的TextView
S在中心,一个在另一个的上面,像这样: (参数texts
为new String[] {"1", "1", "1", "1"}
)
任何人都可以指出我在做什么错?
非常感谢,你现在救了我:) –