我有水平方向的LinearLayouts列表,每个包含动态添加的两个textview。 这个LinearLayout最终被包装到主LinearLayout中。
我希望每个线性布局的第二个textview以编程方式正确对齐。我该怎么做动态。
以下是示例代码:
LinearLayout placeHolderLinearLayout = (LinearLayout)findViewById(R.id.listhosts);
//Several such layouts with 2 text views will be added to placeholder
LinearLayout l = new LinearLayout(this);
l.setClickable(true);
TextView h = new TextView(this);
h.setText("left");
h.setSingleLine(true);
TextView t = new TextView(this);
t.setText("right");
t.setSingleLine(true);
l.addview(h);
l.addview(t);
placeHolderLinearLayout.addView(l);
有android:layout_alignParentRight属性。但是在这种情况下如何动态设置它。任何线索?
答案 0 :(得分:3)
android:layout_alignParentRight
只有在其父级为RelativeLayout
的情况下才能应用于视图。将容器更改为该容器,2个子视图可以使用任何layout_alignParent*
属性。
如果您不能以编程方式执行此操作(我无法快速查看该怎么做),那么您始终可以在xml中定义内部布局(您可以轻松地将布局设置为正确)并通过以下方式手动充气: / p>
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View l = vi.inflate(R.layout.inner_relative_layout, null);
TextView leftTextView = (TextView) l.findViewById(R.id.left_text);
leftTextView.setText("left");
// ... fill in right text too
placeHolderLinearLayout.addView(l);
编辑:添加了布局定义
使用这样的布局,并在上面的代码中对其进行充气:
<RelativeLayout android:id="@+id/inner_relative_layout" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:id="@+id/left_text" android_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TextView android:id="@+id/right_text" android_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</RelativeLayout>
您将为要添加到列表中的每个项目创建多个这些布局。
答案 1 :(得分:1)
这是一个简单的回答::
public class MainActivity extends Activity {
TextView text[];
TextView texto[];
CheckBox check[];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view = findViewById(R.id.layout);
text = new TextView[5];
texto = new TextView[5];
check = new CheckBox[5];
for (int i = 0; i < 5; i++) {
text[i] = new TextView(this);
text[i].setText("First one is::" + i);
texto[i] = new TextView(this);
texto[i].setText("sennd one ibs::" + i);
check[i] = new CheckBox(this);
((ViewGroup) view).addView(check[i]);
((ViewGroup) view).addView(text[i]);
((ViewGroup) view).addView(texto[i]);
}
}
}
答案 2 :(得分:0)
请尝试以下
LinearLayout placeHolderLinearLayout = (LinearLayout)findViewById(R.id.listhosts);
//Several such layouts with 2 text views will be added to placeholder
LinearLayout l = new LinearLayout(this);
l.setClickable(true);
TextView h = new TextView(this);
txt1.setGravity(Gravity.LEFT);
h.setText("left");
h.setSingleLine(true);
TextView t = new TextView(this);
txt1.setGravity(Gravity.RIGHT);
t.setText("right");
t.setSingleLine(true);
l.addview(h);
l.addview(t);
placeHolderLinearLayout.addView(l);