2012-07-27 2 views
6

Я разрабатываю приложение, в котором пользователь должен иметь возможность изменять аппликацию кнопки, нажимая другие кнопки. Я использую четыре кнопки, чтобы установить высоту в качестве содержимого обложки, height как заполняющий родительский элемент, ширину как содержимое обложек и ширину, как заполнение родителя.Установите высоту и ширину кнопки в качестве содержимого обертывания и заполните родительский элемент

Я немного искал Google и нашел решение с использованием LayoutParams, хотя в этом коде не указано, была ли высота ширины изменена. Я также получил ошибки, заявив, что моя IDE не может распознать «LayoutParams». Каков наилучший способ сделать это?

ответ

10

Что вам нужно для поиска - это View.ViewGroup.LayoutParams. Каждый LayoutParams имеет постоянное значение для атрибутов MATCH_PARENT и WRAP_CONTENT. Я подготовил простой пример кода вы можете играть с:

активность:

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

Layout 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

Большое спасибо! Я очень признателен, что вы нашли время, чтобы написать образец кода, сделав все очень понятным. Ты лучший! – SweSnow

+0

рад, что это помогает. наслаждаться –

0

Используя приведенный ниже код, вы можете легко изменять высоту и ширину динамически.

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

Я получаю ошибку «Неизвестный объект 'раскладка PARAMS' Почему что – SweSnow

+0

Извините, но это не работает. – Signcodeindie

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – JuJoDi

Смежные вопросы