Предположим, у меня есть две кнопки в RelativeLayout
. Кнопка с надписью «один» вверху и кнопка с надписью «три» под «одним». Макет определяется следующим образом. RelativeLayout вставить точку зрения между двумя другими
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/mainContainer"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvOne"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:text="One" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvThree"
android:layout_centerHorizontal="true"
android:layout_below="@id/tvOne"
android:text="Three" />
</RelativeLayout>
Так что я написал код в onCreate
из MainActivity
динамически создавать Button
, и вставьте его между одним и тремя. Но он не работает. Есть что-то, что мне не хватает? Я создал этот вопрос как упрощенную версию более крупной проблемы, с которой я столкнулся, поэтому для меня неприемлемо очистить макет и просто вставить один-два и три динамически.
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button one = (Button)findViewById(R.id.tvOne);
Button three = (Button)findViewById(R.id.tvThree);
//Dynamically create a button, set it underneath one and above two.
Button two = new Button(this);
two.setText("TWO TWO TWO TWO TWO TWO TWO");
//Create some layout params so that this button is horizontally centered,
//above button number three and below button number one
final int WC = RelativeLayout.LayoutParams.WRAP_CONTENT;
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WC, WC);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
params.addRule(RelativeLayout.BELOW, one.getId());
params.addRule(RelativeLayout.ABOVE, three.getId());
two.setLayoutParams(params);
//Add button number two to the activity.
RelativeLayout rl = (RelativeLayout)findViewById(R.id.mainContainer);
rl.addView(two);
}
где третья кнопка становится добавление сейчас .. –
не меняет layoutparams на кнопку три .. так что всегда допустимый «андроид: layout_below =» @ идентификатор/tvOne «» , – fasteque
Может быть, это может вам помочь: http://stackoverflow.com/questions/12524589/how-can-we-add-buttons-at-dynamic-positions-in-layout –