tamaño studio saber resoluciones resolucion pantalla como celular cambiar ajustar android

studio - Cambiar dinámicamente el ancho o la altura de la reproducción lineal en Android



saber resolucion de pantalla android (4)

Comprueba esto - http://smartandroidians.blogspot.com/2010/04/changing-layout-height-dynamically.html

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

Esto funciona también en el controlador de eventos.

Estoy tratando de cambiar el diseño lineal o cualquier otro ancho o alto de widget dinámicamente pero lanzando una excepción.

Mi diseño es:

<?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>

y mi actividad es:

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)); }

Lanzar siguiente excepción:

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)

Entonces, ¿cómo puedo cambiar las dimensiones dinámicamente?


El problema aquí es que cuando se configuran los parámetros de diseño, el tipo debe ser el del padre, en este caso es un FrameLayout. Usted necesita hacer ésto:

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


Esta forma simple de hacer tu tarea:

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);

y de otra manera, si desea dar el tamaño de la pantalla en altura y anchura, use el siguiente código:

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);

Espero aprovecharlo por completo.


Puede usar este método dentro de su clase de utils para establecer la altura y el ancho dinámicamente.

public void setWidthAndHeight(Context context,RelativeLayout view,int width, int height) { width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width, context.getResources().getDisplayMetrics());//used to convert you width integer value same as dp height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, height, context.getResources().getDisplayMetrics()); //note : if your layout is LinearLayout then use LinearLayout.LayoutParam view.setLayoutParams(new RelativeLayout.LayoutParams(width, height)); }