Establecer la anchura de vista mediante programación

Estoy intentando establecer el ancho y la altura de una vista en código para mostrar un anuncio para una aplicación gratuita en la que estoy trabajando. Toda la interfaz de usuario se realiza en XML, con la excepción de este anuncio. Este es el código que muestra el anuncio. Está en onCreate .

 AdView adView = new AdView(this,"ad_url","my_ad_key",true,true); LinearLayout layout = (LinearLayout) findViewById(R.id.testing); adView.setAdListener(this); layout.addView(adView); 

Esto hace que el anuncio se muestre de este modo. Como se puede ver el ancho no llena la página entera.

Introduzca aquí la descripción de la imagen

Ahora cuando cambio el código a esto para intentar fijar el tamaño:

 AdView adView = new AdView(this,"ad_url","my_ad_key",true,true); LinearLayout layout = (LinearLayout) findViewById(R.id.testing); adView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); adView.setAdListener(this); layout.addView(adView); 

Entiendo esto:

Introduzca aquí la descripción de la imagen

He intentado todas las combinaciones diferentes de FILL_PARENT y WRAP_CONTENT todos con el mismo resultado. ¿Hay algo que me falta? ¿O de otra manera puedo hacer que el anuncio llene el ancho del dispositivo sin llenar la altura? Cualquier sugerencia y ayuda es muy apreciada.

EDITAR cuando intento ponerlo en XML Tengo una excepción:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/main_layout"> <fragment android:name="com.jasoncrosby.app.tipcalculatorfree.MainButtonFragment" android:id="@+id/button_frag" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <com.adsdk.sdk.banner.AdView android:id="@+id/banner" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout> 

 > 09-09 22:39:43.448: E/AndroidRuntime(586): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jasoncrosby.app.tipcalculatorfree/com.jasoncrosby.app.tipcalculatorfree.MainActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class com.adsdk.sdk.banner.AdView 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.ActivityThread.access$1500(ActivityThread.java:122) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.os.Handler.dispatchMessage(Handler.java:99) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.os.Looper.loop(Looper.java:132) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.ActivityThread.main(ActivityThread.java:4025) 09-09 22:39:43.448: E/AndroidRuntime(586): at java.lang.reflect.Method.invokeNative(Native Method) 09-09 22:39:43.448: E/AndroidRuntime(586): at java.lang.reflect.Method.invoke(Method.java:491) 09-09 22:39:43.448: E/AndroidRuntime(586): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 09-09 22:39:43.448: E/AndroidRuntime(586): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 09-09 22:39:43.448: E/AndroidRuntime(586): at dalvik.system.NativeStart.main(Native Method) 09-09 22:39:43.448: E/AndroidRuntime(586): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class com.adsdk.sdk.banner.AdView 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.createView(LayoutInflater.java:579) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:671) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.inflate(LayoutInflater.java:479) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.inflate(LayoutInflater.java:391) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.inflate(LayoutInflater.java:347) 09-09 22:39:43.448: E/AndroidRuntime(586): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:223) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.Activity.setContentView(Activity.java:1780) 09-09 22:39:43.448: E/AndroidRuntime(586): at com.jasoncrosby.app.tipcalculatorfree.MainActivity.onCreate(MainActivity.java:95) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712) 09-09 22:39:43.448: E/AndroidRuntime(586): ... 11 more 09-09 22:39:43.448: E/AndroidRuntime(586): Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] 09-09 22:39:43.448: E/AndroidRuntime(586): at java.lang.ClassMembers.getConstructorOrMethod(ClassMembers.java:235) 09-09 22:39:43.448: E/AndroidRuntime(586): at java.lang.Class.getConstructor(Class.java:459) 09-09 22:39:43.448: E/AndroidRuntime(586): at android.view.LayoutInflater.createView(LayoutInflater.java:551) 09-09 22:39:43.448: E/AndroidRuntime(586): ... 21 more 

Este código le permite llenar el banner con el ancho máximo y mantener la relación. Esto sólo funcionará en retrato. Debe volver a crear el anuncio cuando gira el dispositivo. En el paisaje que debe dejar el anuncio como es porque será bastante grande y borrosa.

 Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); double ratio = ((float) (width))/300.0; int height = (int)(ratio*50); AdView adView = new AdView(this,"ad_url","my_ad_key",true,true); LinearLayout layout = (LinearLayout) findViewById(R.id.testing); mAdView.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,height)); adView.setAdListener(this); layout.addView(adView); 

Puedes usar algo como el siguiente código, si necesitas afectar solo un valor específico, y no tocar a otros:

 view.getLayoutParams().width = newWidth; 

En código añadir debajo de la línea:

 spin27.setLayoutParams(new LinearLayout.LayoutParams(200, 120)); 

El primer parámetro de LayoutParams es el ancho y el segundo es la altura. Así que si quieres que el ancho sea FILL_PARENT, pero el ancho sea, digamos, 20px, entonces usa algo nuevo LayoutParams (FILL_PARENT, 20). Por supuesto usted nunca debe utilizar píxeles reales en su código; Usted necesitará convertir eso a los pixeles independientes de la densidad, pero usted consigue la idea. Además, debe asegurarse de que su Parent LinearLayout tenga el ancho y la altura adecuados que está buscando. Parece que quieres que el LinearLayout rellene el ancho de los padres y luego que el relleno de la vista de adición sea linear también, así que probablemente necesites especificar android: layout_width: "fill_parent" y android: layout_height: wrap_content El xml de su diseño lineal.

Comprobarlo en el dispositivo mdpi .. Si el anuncio se muestra correctamente, el error debe estar en "px" a "dip" conversión ..

hsThumbList.setLayoutParams(new LayoutParams(100, 400)); : hsThumbList.setLayoutParams(new LayoutParams(100, 400));

  • Recurso del paisaje de Nexus 9
  • Android: rejilla del centro horizontalmente
  • Android: ¿Acabo de tener un disparo por propiedad mediante el uso de temas? ¿No hay nada como CSS en Android?
  • ¿Cómo cortar y revertir la vista de la cámara?
  • El retorno de carro de TextView no funciona
  • Falta los atributos required layout_width y layout_height
  • Configuración de RelativeLayout en código java
  • RelativeLayout vs rendimiento de diseño lineal anidado
  • Cómo centrar una imagen de fondo de tema en una actividad de Android
  • Xmlns: android = "http://schemas.android.com/apk/res/android" se agrega a todos mis objetos de diseño causando errores
  • Desactivar el enfoque automático al editar el texto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.