/ / Android - Android पर रैखिक रूप से चौड़ाई या ऊँचाई को परिवर्तित करना

एंड्रॉइड पर लाइनरलेआउट चौड़ाई या ऊंचाई गतिशील रूप से बदल रहा है - एंड्रॉइड

मैं रैखिक लेआउट या किसी अन्य विजेट की चौड़ाई या ऊंचाई को गतिशील रूप से लेकिन अपवाद को फेंकने की कोशिश कर रहा हूं।

मेरा लेआउट है:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/abc"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ghghjkgj ghjg hjgj ghj g hjgjgh jhg "
/>
</LinearLayout>

और मेरी गतिविधि है:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout ll = (LinearLayout)findViewById(R.id.abc);
ll.setLayoutParams(new LinearLayout.LayoutParams(30,60));
}

निम्न अपवाद को फेंकना:

E/AndroidRuntime(16052): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
E/AndroidRuntime(16052):    at android.widget.FrameLayout.onLayout(FrameLayout.java:288)
E/AndroidRuntime(16052):    at android.view.View.layout(View.java:7035)
E/AndroidRuntime(16052):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
E/AndroidRuntime(16052):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
E/AndroidRuntime(16052):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
E/AndroidRuntime(16052):    at android.view.View.layout(View.java:7035)
E/AndroidRuntime(16052):    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
E/AndroidRuntime(16052):    at android.view.View.layout(View.java:7035)
E/AndroidRuntime(16052):    at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
E/AndroidRuntime(16052):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
E/AndroidRuntime(16052):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(16052):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(16052):    at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(16052):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(16052):    at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(16052):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(16052):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(16052):    at dalvik.system.NativeStart.main(Native Method)

तो मैं गतिशील रूप से आयाम कैसे बदल सकता हूं?

उत्तर:

उत्तर № 1 के लिए 49

इसे देखो - http://smartandroidians.blogspot.com/2010/04/changing-layout-height-dynamically.html

ll.getLayoutParams().height = 300;
ll.getLayoutParams().width = 200;
ll.requestLayout();

यह ईवेंट हैंडलर पर भी काम करता है।


जवाब के लिए 2 9। 2

यहाँ समस्या यह है कि जब आप लेआउट को निर्धारित करते हैं तो उस प्रकार की आवश्यकता होती है जो माता-पिता के लिए होती है, इस मामले में यह फ्रेमलेयआउट है। आपको यह करने की आवश्यकता है:

ll.setLayoutParams(new FrameLayout.LayoutParams(30,60));

जवाब के लिए 4 № 3

अपना काम करने का यह सरल तरीका:

setContentView(R.id.main);
LinearLayout layout= (LinearLayout) findViewById(R.id.left);
int width=60;
int height=60;
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height);
layout.setLayoutParams(parms);

और दूसरा तरीका अगर आप ऊंचाई और चौड़ाई में स्क्रीन का आकार देना चाहते हैं तो नीचे दिए गए कोड का उपयोग करें:

setContentView(R.id.main);
Display display = getWindowManager().getDefaultDisplay();
LinearLayout layout= (LinearLayout) findViewById(R.id.left);
int width=display.getWidth();
int height=display.getHeight();
LinearLayout.LayoutParams parms = new inearLayout.LayoutParams(width,height);
layout.setLayoutParams(parms);

आशा है कि आप का पूरा उपयोग करें।