2011-09-01 84 views
4

XML的ViewGroup我希望能够到一个视图中的代码添加到一个已经存在的XML布局:添加视图,以现有的代码

 LinearLayout ll = (LinearLayout) findViewById(R.layout.common_list); 

     TextView tv = new TextView(this); 
     tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     tv.setText("sample text"); 
     ll.addView(tv); 

     setContentView(ll); 

当创建一个新的LinearLayout代码它的工作原理,但是当使用像上面的代码中的资源,它不会。

common_list.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:text="Quick List"/> 

</LinearLayout> 
+0

哪个错误给你在logcat? – Dayerman

+0

错误/ AndroidRuntime(8357):java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.androidABC/com.example.androidABC.Common_ActivityList}:java.lang.NullPointerException 09-01 14:59:57.889: ERROR/AndroidRuntime(8357):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2753) 09-01 14:59:57.889:ERROR/AndroidRuntime(8357):at android.app.ActivityThread.handleLaunchActivity(ActivityThread。 java:2769) 09-01 14:59:57.889:ERROR/AndroidRuntime(8357):at android.app.ActivityThread.access $ 2500(ActivityThread.java:129) – Klau3

回答

6

尝试使用LayoutInflater

LinearLayout ll = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.common_list) 
TextView tv = new TextView(this); 
tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
tv.setText("sample text"); 
ll.addView(tv); 

setContentView(ll); 

如果这样都不行,请从logcat中添加错误。

此外,你应该从机器人更改属性:layout_width = “FILL_PARENT” 到Android:在common_list.xml YOUT的LinearLayout layout_width = “WRAP_CONTENT”,也做同样的事情到你的TextView在common_list.xml

为什么?因为您的布局是面向横向的并且它填充整个屏幕空间。你的TextEdit可以填充你的布局所需的空间(在这种情况下,它是整个屏幕空间)。现在,当您添加另一个TextView时,它会正确地添加到第一个TextEdit的右侧,所以它就像是在屏幕之外。要准确理解发生了什么:

----------------- 
||-------------||--------------- 
||| TextViev1 ||||addedTextView| 
||-------------||--------------- 
||    || 
||    || 
||    || 
||    || 
||    || 
||LinearLayout || 
||-------------|| 
| screen  | 
---------------- 

我也有过这个问题多次。通常如果你添加视图到布局,而你没有看到它(并且你没有错误),问题是宽度/高度或位置(例如当你使用RelativeLayout时)。

+0

现在它打开活动,但它不显示创建了TextView。这里是我使用的代码:'LinearLayout ll =(LinearLayout)LayoutInflater.from(this).inflate(R.layout.common_list,null); \t \t TextView tv = new TextView(this); \t \t tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); \t tv.setText(“sample text”); \t ll.addView(tv); \t \t setContentView(ll); ' – Klau3

+0

请附上您的common_list.xml。 –

+0

我将它添加到问题描述 – Klau3

相关问题