Как добавить две кнопки в LinearLayout программно?

#java #android #android-linearlayout

#java #Android #android-linearlayout

Вопрос:

Я не могу сделать addView() два раза. На самом деле, я хочу еще одну TextView (левую) и одну Button (правую). Итак, как я могу их разместить LinearLayout ?

 if (success == 1) {
    content = json.getJSONArray(TAG_COMMENTS);
    layoutVertical.removeAllViews();
    final int N = content.length();
    final Button[] myButton = new Button[N];
    final LinearLayout[] myLayout = new LinearLayout[N];
    final TextView[] myTextView = new TextView[N];
    for (int i = 0; i < content.length(); i  ) {
        JSONObject c = content.getJSONObject(i);

        String name = c.getString(TAG_CONTENT);
        final LinearLayout layoutHorizontal = new LinearLayout(
                getActivity());
        layoutHorizontal
                .setOrientation(LinearLayout.HORIZONTAL);
        layoutHorizontal.setId(i);
        layoutHorizontal.setBackground(getResources()
                .getDrawable(R.drawable.borderadmincomment));
        final TextView rowTextView = (TextView) new TextView(
                getActivity());
        rowTextView.setText(name);
        rowTextView.setId(i);

        final Button rowButton = new Button(getActivity());
        rowButton.setLayoutParams(new LayoutParams(1,
                LayoutParams.MATCH_PARENT));
        rowButton.setId(i);
        rowButton.setBackgroundResource(R.drawable.croix);
        rowButton
                .setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                });
        layoutHorizontal.addView(rowTextView, 0);
        layoutHorizontal.addView(rowButton, 1);
        rowTextView.setWidth(400);
        //rowTextView.setHeight(150);
        //rowButton.setHeight(150);
        layoutVertical.addView(layoutHorizontal);
        myButton[i] = rowButton;
        myLayout[i] = layoutHorizontal;
        myTextView[i] = rowTextView;
    }
}
  

Это не работает.

Спасибо.

Ответ №1:

Вы забыли установить параметры макета для горизонтального макета и rowTextView.

Например:

 layoutHorizontal.setLayoutParams(new
       LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
  

Комментарии:

1. layoutHorizontal.setLayoutParams(новые параметры компоновки(LayoutParams. FILL_PARENT,LayoutParams . WRAP_CONTENT)); rowButton.setLayoutParams(новые параметры компоновки (100, 150));

Ответ №2:

Создайте параметр линейного макета. Сделайте что-то вроде этого:-

 LinearLayout LL = new LinearLayout(this);
LL.setBackgroundColor(Color.CYAN);
LL.setOrientation(LinearLayout.HORIZONTAL);

LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

LL.setWeightSum(2f);
LL.setLayoutParams(LLParams);
  

Пожалуйста, дайте мне знать, что это сработает.

Ответ №3:

Создайте файл XML-макета и назовите его item.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_vertical" >

    <TextView
        android:id="@ id/rowTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_weight="1" />

    <Button
        android:id="@ id/rowButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>
  

Напишите следующий код в своей деятельности

 LayoutInflater inflater = (LayoutInflater)   getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View layoutHorizontal =  inflater.inflate(R.layout.item, null);
            TextView rowTextView = (TextView) layoutHorizontal.findViewById(R.id.rowTextView);
            Button rowButton = (Button) layoutHorizontal.findViewById(R.id.rowButton);
     layoutVertical.addView(layoutHorizontal);