Я пытаюсь добавить кнопку динамически, когда список пуст, т.е. нет данных для заполнения списка. Я попробовал приведенный ниже код, и он не работает
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>
Вы можете поместить свою кнопку в файл макета xml и сделать visible
и invisible
в соответствии с вашим условием
if(your condition)
{
button.setVisibility(View.VISIBLE);
}
else
{
button.setVisibility(View.GONE);
}
Я решил вашу проблему. Следуй этим шагам. Ваш код прав, но вы допустили небольшую ошибку. Вы добавляете свой вид или кнопку в линейном макете, но ваш макет таблицы удерживает всю область вашего экрана, используя ширину и высоту, заполняющую родительский элемент, поэтому просто добавьте свою кнопку в макет таблицы следующим образом:
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);
}
}
Теперь вы можете добавить кнопку динамически.
Это там, вы просто не можете видеть это из-за этого:
<TableLayout
android:id="@+id/TblLyt"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
Вы говорите, что таблица заполняет весь макет. Вы можете установить TableLayout в GONE, а затем добавить кнопку, или вы можете изменить layout_height
на wrap_content
.