2012-07-27 14 views
6

Estoy desarrollando una aplicación donde se supone que el usuario puede alterar la apariencia de un botón presionando otros botones. Uso cuatro botones para establecer la altura como contenido de ajuste, alto como relleno primario, ancho como contenido de relleno y ancho como relleno primario.Establezca el alto y el ancho del botón como contenido de relleno y relleno principal

Busqué en Google un poco y encontré una solución usando LayoutParams, aunque ese código no especificaba si la altura de ancho era alterada. También recibí errores que decían que mi IDE no podía reconocer "LayoutParams". ¿Cuál es la mejor manera de hacer esto?

Respuesta

10

Lo que necesita para ver es View.ViewGroup.LayoutParams. Cada LayoutParams tiene un valor constante para los atributos MATCH_PARENT y WRAP_CONTENT. he preparado sencillo ejemplo de código se puede jugar con:

Actividad:

package com.example.stack2; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.Button; 

public class MainActivity extends Activity implements OnClickListener{ 

    Button test; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button b = (Button)findViewById(R.id.button1); 
     b.setOnClickListener(this); 
     b = (Button)findViewById(R.id.button2); 
     b.setOnClickListener(this); 
     b = (Button)findViewById(R.id.button3); 
     b.setOnClickListener(this); 
     b = (Button)findViewById(R.id.button4); 
     b.setOnClickListener(this); 
     test = (Button)findViewById(R.id.test); 
    } 
    public void onClick(View v) 
    { 
     LayoutParams lp = test.getLayoutParams(); 
     if(v.getId() == R.id.button1) 
     { 
      lp.height = LayoutParams.WRAP_CONTENT; 
     }else if(v.getId() == R.id.button2){ 
      lp.width = LayoutParams.WRAP_CONTENT; 
     }else if(v.getId() == R.id.button3){ 
      lp.height = LayoutParams.MATCH_PARENT; 
     }else if(v.getId() == R.id.button4){ 
      lp.width = LayoutParams.MATCH_PARENT; 
     } 
     test.setLayoutParams(lp); 
    } 
} 

diseño xml:.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="horizontal"> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="h_wc" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="w_wc" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="h_fp" /> 

     <Button 
      android:id="@+id/button4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="h_fp" /> 

    </LinearLayout> 

    <Button 
     android:id="@+id/test" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="test" /> 

</LinearLayout> 
+0

¡Muchas gracias! Realmente aprecio que se haya tomado el tiempo para escribir el código de muestra, que haya dejado las cosas claras. ¡Eres el mejor! – SweSnow

+0

me alegro de que ayude. disfrutar –

0

Al usar el siguiente código, puede modificar fácilmente la altura y el ancho de forma dinámica.

btn = new Button(Activity.this); 
btn.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT)); 

btn.setText("\t\t" + lbl + "\t\t\t "); 
     btn.setBackgroundResource(R.drawable.blue_button); 
btn.setwidth(100); 
+0

estoy recibiendo el error "entidad desconocida 'diseño params' ¿Por qué es eso? – SweSnow

+0

Lo sentimos, no funciona – Signcodeindie

+0

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas solo de enlace pueden dejar de ser válidas si la página vinculada cambia – JuJoDi

Cuestiones relacionadas