एंड्रॉइड व्यू ग्रुप क्लास को विस्तारित करते समय, onLayout()
ओवरराइड का उद्देश्य क्या है? मैं एंड्रॉइड में कस्टम नियंत्रण कर रहा हूं लेकिन किसी कारण से सामग्री (बच्चे View
ऑब्जेक्ट्स) प्रदर्शित नहीं हो रहा है। मेरा दृष्टिकोण व्यू ग्रुप क्लास को विस्तारित करना था, व्यू ग्रुप की addView()
विधि के माध्यम से बाल-दृश्य जोड़ना। फिर, अपने मुख्य गतिविधि में, मैं निम्नलिखित कोड है:एंड्रॉइड व्यू ग्रुप: मुझे ऑनआउट() ओवरराइड में क्या करना चाहिए?
ChannelController myCC = new ChannelController(this);
setContentView(myCC);
ChannelController अपने कस्टम वर्ग का नाम है कि ViewGroup फैली हुई है। मुझे कुछ गलत करना होगा क्योंकि स्क्रीन पर कुछ भी नहीं दिखाया गया है।
मैं समझता हूँ कि मैं ओवरराइड और onLayout() विधि को लागू करना चाहिए, लेकिन क्या साथ? मुझे पता है कि dev.android साइट पर इसके लिए समर्पित एक संपूर्ण पृष्ठ है, लेकिन इससे मुझे बहुत मदद नहीं मिली, क्योंकि ज्यादातर मुझे लगता है कि मैं नौसिखिया हूं। किसी भी जानकारी की सराहना की जाएगी।
संदर्भ के लिए, मेरी ViewGroup विस्तार से नीचे दिखाई देता है:
public class ChannelController extends ViewGroup {
final String TAG = "JAL";
public ChannelController(Context c)
{
super(c);
init(c);
}
public ChannelController(Context c, AttributeSet attibset)
{
super(c);
init(c);
}
public ChannelController(Context c, AttributeSet attribset, int defStyle)
{
super(c);
init(c);
}
public void init(Context c)
{
//RelativeLayout wrap = new RelativeLayout(c);
RelativeLayout.LayoutParams wrapLP = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout r1 = new RelativeLayout(c);
RelativeLayout.LayoutParams r1LP = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout r2 = new RelativeLayout(c);
RelativeLayout.LayoutParams r2LP = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
TextView t = new TextView(c);
RelativeLayout.LayoutParams tlp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Button m = new Button(c);
RelativeLayout.LayoutParams mlp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Button s = new Button(c);
RelativeLayout.LayoutParams slp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
SeekBar f = new SeekBar(c);
RelativeLayout.LayoutParams flp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
t.setId(1);
m.setId(2);
s.setId(3);
f.setId(4);
r1.setId(5);
r2.setId(6);
t.setText("CHANNELNAME");
t.setTextColor(Color.BLACK);
tlp.setMargins(30, 0, 0, 0);
tlp.addRule(RelativeLayout.LEFT_OF, m.getId());
tlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
tlp.addRule(RelativeLayout.CENTER_VERTICAL);
tlp.addRule(RelativeLayout.CENTER_HORIZONTAL);
m.setText("M");
m.setBackgroundColor(Color.rgb(237, 155, 31));
m.setTextColor(Color.WHITE);
mlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
mlp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
m.setTextSize(10);
flp.addRule(RelativeLayout.LEFT_OF, s.getId());
flp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
flp.addRule(RelativeLayout.CENTER_VERTICAL);
s.setText("S");
s.setTextSize(10);
s.setBackgroundColor(Color.rgb(192, 48, 46));
s.setTextColor(Color.WHITE);
slp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
slp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
r1.addView(t, tlp);
r1.addView(m, mlp);
r2.addView(f, flp);
r2.addView(s, slp);
r1.setBackgroundColor(Color.rgb(233, 242, 251));
r2.setBackgroundColor(Color.rgb(233, 242, 251));
r1LP.addRule(RelativeLayout.ALIGN_PARENT_TOP);
r2LP.addRule(RelativeLayout.BELOW, r1.getId());
this.addView(r1, r1LP);
this.addView(r2, r2LP);
this.setLayoutParams(wrapLP);
//this.addView(wrap);
Log.i(TAG, "ChannelController constructor was called");
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
//super.onLayout(changed, l, t, r, b);
}
}
क्या मैं onLayout विधि ओवरराइड में क्या करना चाहिए?
संबंधित (जो, मुझे लगता है, वास्तव में आपके मामला है): http://stackoverflow.com/questions/6843138/viewgroup-onlayout-problem –