我還沒有在互聯網上找到答案一段時間,現在我問你是否可以幫助我。android,將XML佈局視圖添加到自定義類中的充氣視圖
簡稱: 我應該如何重寫addView()(或別的東西)添加在XML定義我的意見「自定義視圖充氣XML佈局」
長: 我想創建一個自定義視圖我Android應用程序,所以我從RelativeLayout創建了一個乾淨的子類。在這裏,我讓Inflater加載一個xml佈局來獲得一個不錯的風格。
但現在,我想在自定義視圖內添加一些內容,但不想在程序中添加它(這很簡單),但是使用xml。我不能跨越的差距,我的腦海裏,找到解決方案...
代碼: 自定義類:
<packagename....Slider
android:id="@+id/slider1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/Red" >
<TextView
android:id="@+id/heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HEADING" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="bbb" />
...
TextView的和按鍵是:使用子類
public class Slider extends RelativeLayout {
private RelativeLayout _innerLayout;
public Slider(Context context) {
super(context);
init();
}
public Slider(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
protected void init() {
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
_innerLayout = (RelativeLayout) layoutInflater.inflate(R.layout.layout_r, this);
}
@Override
public void addView(View child) {
//if (_innerLayout != null) _innerLayout.addView(child);
super.addView(child);
}
... all other addView's are overridden in the same way
XML文件添加到子類......當然......但在那之後,我從Slider,TextView,Button和我從R.layout.layout_r的膨脹佈局中得到了3個孩子。但我只想要1個孩子(layout_r),其中包含Button和TextView。
正如你可以在addView中看到的,我試圖簡單地將傳遞的「View child」添加到_innerLayout。那不起作用。 Android框架不斷給你打電話addView並與結尾的StackOverflowError
兩件事要告訴你太:
我知道添加的XML瀏覽犯規致電給addView,但我已經重寫所有其他人也和所有看起來是一樣的,所以他們不需要展示他們。
調試說我,那addView被稱爲前_innerLayout得到膨脹的佈局
爲2的原因是什麼?
你能幫助我嗎?