2012-05-24 6 views
1

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

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

попробуйте недействительный макет – Warpzit

+0

@Warpzit Что вы подразумеваете под этим? – Allwyn

+0

Просто добавьте его после линейногоLayout.invalidate(). – Warpzit

ответ

5

Вы можете разместить кнопку в файле макета XML и сделать visible & invisible в соответствии с вашим состоянием

if(your condition) 
{ 
button.setVisibility(View.VISIBLE); 
} 
else 
{ 
button.setVisibility(View.GONE); 
} 
+0

Я тоже это пробовал и работаю нормально. Но мне нужно добавить динамически, потому что кнопка займет пространство, даже если оно скрыто. – Allwyn

+1

используйте View.GONE вместо View.INVISIBLE ... он не займет место –

+0

Это сработало ... Спасибо – Allwyn

1

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

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

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

+0

Я изменил высоту на обертку но все же его не видно. – Allwyn

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

Спасибо. Он работал – Allwyn

+0

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

+0

выше мой код даст вам доступ к кнопке добавления динамически .... – itechDroid

Смежные вопросы