Кнопка добавления, когда список пуст

1

Я пытаюсь добавить кнопку динамически, когда список пуст, т.е. нет данных для заполнения списка. Я попробовал приведенный ниже код, и он не работает

public class TableDemoActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear);

            Button test = new Button(this);
            test.setText("Hello Android");
            test.setId(5);
            test.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));

            linearLayout.addView(test);

        }

    }

Вот содержимое файла макета

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<TableLayout 
    android:id="@+id/TblLyt"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     >

    <TableRow
        android:id="@+id/AcctHeader"
    >
    </TableRow>

    <ExpandableListView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/BankExpandableListView"
        android:layout_width="fill_parent"
        android:layout_height="443dp"
        android:layout_weight="1.32"
    >
    </ExpandableListView>

</TableLayout>
</LinearLayout>
  • 0
    попробуйте сделать макет недействительным
  • 0
    @Warpzit, что ты имеешь в виду под этим?
Показать ещё 2 комментария
Теги:
android-layout

3 ответа

5
Лучший ответ

Вы можете поместить свою кнопку в файл макета xml и сделать visible и invisible в соответствии с вашим условием

if(your condition)
{
button.setVisibility(View.VISIBLE);
}
else
{
button.setVisibility(View.GONE);
}
  • 0
    Я тоже это попробовал и все работает нормально. Но мне нужно добавить динамически, потому что кнопка будет занимать пространство, даже если оно скрыто
  • 1
    пожалуйста, используйте View.GONE вместо View.INVISIBLE ... он не будет занимать место
Показать ещё 1 комментарий
2

Я решил вашу проблему. Следуй этим шагам. Ваш код прав, но вы допустили небольшую ошибку. Вы добавляете свой вид или кнопку в линейном макете, но ваш макет таблицы удерживает всю область вашего экрана, используя ширину и высоту, заполняющую родительский элемент, поэтому просто добавьте свою кнопку в макет таблицы следующим образом:

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TableLayout;

public class TableDemoActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear);
        TableLayout table=(TableLayout) findViewById(R.id.TblLyt);

        Button test = new Button(this);
        test.setText("Hello Android");
        test.setId(5);
        test.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        table.addView(test);        
        //linearLayout.addView(test);
    }
}

Теперь вы можете добавить кнопку динамически.

  • 0
    Спасибо. Это сработало
  • 0
    он отлично работает, но тот, который я принял, является наиболее подходящим решением в моем случае, а также был опубликован до того, как вы пришли к ответу. В любом случае спасибо за помощь.
Показать ещё 1 комментарий
1

Это там, вы просто не можете видеть это из-за этого:

<TableLayout  
    android:id="@+id/TblLyt" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

Вы говорите, что таблица заполняет весь макет. Вы можете установить TableLayout в GONE, а затем добавить кнопку, или вы можете изменить layout_height на wrap_content.

  • 0
    Я изменил высоту в содержимое обтекания, но все равно его не видно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню