2012-09-13 104 views
0

我有個親戚佈局塔具有以下XML:編程方式將項目添加到相對佈局

<RelativeLayout 
    android:id="@+id/date_bar_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/navigation_bar_layout" 
    android:background="@color/light_gray" 
    android:gravity="center"> 

    <TextView 
     android:id="@+id/detaildatetextview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="" 
     android:textColor="@color/black" 
     android:textSize="20dp" 
     android:textStyle="bold" /> 
</RelativeLayout> 

正如你可以看到它已經在這一個TextView。在我的代碼中的某處,我需要在文本視圖之前以編程方式添加圖像。這意味着首先將顯示圖像,然後顯示文本視圖。但是當我執行代碼和文本視圖時,圖像會顯示。請幫我解決這個問題。我的實施如下:

image = new ImageView(getApplicationContext()); 
image.setId(0); 
dateText = (TextView) dateBarLayout.findViewById(R.id.detaildatetextview); 
dateText.setText("Dummy text"); 
RelativeLayout.LayoutParams params = (LayoutParams) dateBarLayout.getLayoutParams(); 
params.addRule(RelativeLayout.LEFT_OF, dateText.getId());      
String icon = "drawable/"+ path; 
icon = icon.replaceAll("-", "_"); 
icon = icon.toLowerCase(); 
int imageResource = this.getApplicationContext().getResources().getIdentifier(icon, null,this.getApplicationContext().getPackageName()); 
image.setImageResource(imageResource); 
dateBarLayout.addView(image); 

我不知道我要去哪裏錯了..請幫助我擺脫這一點。在此先感謝...-) :-)

+0

你要顯示的圖像文本的圖像和頂部? –

+0

不,我希望首先顯示圖像,然後用簡單的文字從左到右的圖像顯示,然後顯示文本。 –

+0

@UsamaSarwar請看我的答案,它會解決你的問題。 –

回答

0

您需要設置佈局參數爲正在添加的視圖,以將其放置在相對佈局,否則它將重疊左視圖在佈局中,所以而不是addView (View)使用http://developer.android.com/reference/android/view/ViewGroup.html#addView(android.view.View, android.view.ViewGroup.LayoutParams)方法將視圖添加到佈局。所以,你的代碼更改爲以下:

image = new ImageView(getApplicationContext()); 
    image.setId(0); 

    dateText = (TextView) dateBarLayout.findViewById(R.id.detaildatetextview); 

    dateText.setText("Dummy text"); 



     RelativeLayout.LayoutParams params = (LayoutParams) dateBarLayout.getLayoutParams(); 
    params.addRule(RelativeLayout.LEFT_OF, dateText.getId()); 

     String icon = "drawable/"+ path; 
     icon = icon.replaceAll("-", "_"); 
      icon = icon.toLowerCase(); 

     int imageResource = this.getApplicationContext().getResources().getIdentifier(icon, null,this.getApplicationContext().getPackageName()); 

     image.setImageResource(imageResource); 
        dateBarLayout.addView(image, params); 
+0

我嘗試過......但它沒有工作...... :( –

0

添加以下代碼到你的java文件setcontentview(R.layout.main);後,它會解決你的問題。

ImageView image = new ImageView(this); 
RelativeLayout dateBarLayout=(RelativeLayout)findViewById(R.id.date_bar_layout); 
TextView dateText = (TextView) dateBarLayout.findViewById(R.id.detaildatetextview); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.LEFT_OF, dateText.getId()); 
image.setLayoutParams(params); 
image.setImageResource(R.drawable.ic_launcher); 
dateBarLayout.addView(image); 
0
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<RelativeLayout 
android:id="@+id/Rl" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
> 



<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dip" 
    android:gravity="left" 
    android:onClick="addAddbutton" 
    android:text="add" 
    android:visibility="visible" /> 

</RelativeLayout> 
</RelativeLayout> 


mainActivity.java 

package com.example.textboxonclick; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.RelativeLayout; 

public class MainActivity extends Activity { 

private RelativeLayout Rl; 
private EditText myEditText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
ln = (RelativeLayout) findViewById(R.id.Rl); 

} 
public void addAddbutton(View v) { 
myEditText = new EditText(this); 
Rl.addView(myEditText); 
} 
} 
+0

請在你的答案中加入一些文字,你在代碼中修改了什麼以解決問題中的問題?你能用幾句話解釋爲什麼是否有必要? – Sumurai8

+0

親愛的,這很簡單,我們在按鈕裏面有一個相對佈局的按鈕,只需在相對佈局中添加一個editText即可。 – Musman

相關問題