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.
- ¿Cómo puedo superponer una sombra en un ScrollView?
- ¿Cómo importar el código fuente del proyecto de Android App en Eclipse?
- Incluir el mismo diseño varias veces
- Diferencia entre android: layout_alignParentTop y android: layout_alignParentStart
- No conseguir el pulgar con géneros - jugador de música universal
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:
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
- Cómo mostrar la leyenda en el lado derecho de piechart en achartengine android
- Android UnsupportedOperationException: No se puede convertir a color: type = 0x2
- No hay barra de título para Android
- Android: Cómo implementar el dibujo en la parte superior de la imagen
- Cómo tener EditText con borde en Android Lollipop
- Coloque 3 botones en un LinearLayout para ocupar la misma cantidad de espacio
- ImageView en CollapsingToolbarLayout no cubre la altura completa?
- Ajusta el diseño cuando se muestre o se oculte el teclado virtual de Android
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));
- OnPause y OnStop () llamados inmediatamente después de iniciar la actividad
- ¿Cómo puedo obtener el menú de opciones de mi actividad?