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

  • Integración de archivos de vídeo en la aplicación Android como fondo de la aplicación
  • ¿Cómo aumentar la altura de la fila de la tabla según las pantallas?
  • Diseño de una aplicación para Android sólo para tablets
  • Deshabilitar el teclado virtual en NumberPicker
  • Cómo Inflar Extended LinearLayout de XML
  • ActionBarSherlock Ítem Icono de ancho extraño con Android 4.3
  • Android ScrollView fillViewport no funciona
  • Android superior Copiar / Pegar barra de herramientas
  • Android: Scrollview amplía la imagen de fondo
  • Android: Vista inferior de navegación - cambia el icono del elemento seleccionado
  • ¿Hay alguna manera de cambiar el color de la elevación de una vista android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.