动态设置切换按钮的大小

时间:2010-11-22 21:35:04

标签: android

首先抱歉我的英语不好:) 我是Android新编程的新手...... 我正在尝试在运行时设置视图。我已成功创建自己的View类(从AbsoluteView派生),但如果我尝试调整视图内容的大小,则没有任何反应:(

这是我写的完整代码:

package com.CaliskanDevelopment.LottoGenerator;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.AbsoluteLayout;
import android.widget.ToggleButton;

@SuppressWarnings("deprecation")
public class CSelectNumbersLayout extends AbsoluteLayout 
{
private ToggleButton    m_clButton;

public CSelectNumbersLayout( Context    clContext )
{
    super( clContext );
    CreateButtons();
}

public CSelectNumbersLayout( Context        clContext,
                             AttributeSet   clAttributeSet )
{
    super( clContext, clAttributeSet );
    CreateButtons();
}

public CSelectNumbersLayout( Context        clContext,
                             AttributeSet   clAttributeSet,
                             int            i32DefStyle )
{
    super( clContext, clAttributeSet, i32DefStyle );
    CreateButtons();
}

private void CreateButtons()
{
    LayoutParams    clLayoutParams = (LayoutParams) generateDefaultLayoutParams();
    int             i32ButtonWidth = 10;
    int             i32ButtonHeight = 10;
    int             i32PosX = 0;
    int             i32PosY = 0;

    clLayoutParams.x = i32PosX;
    clLayoutParams.y = i32PosY;
    clLayoutParams.width = i32ButtonWidth;
    clLayoutParams.height = i32ButtonHeight;

    m_clButton = new ToggleButton( getContext() );
    m_clButton.setText( "setText" );
    m_clButton.setTextOn( "setTextOn" );
    m_clButton.setTextOff( "setTextOff" );
    m_clButton.setLayoutParams( clLayoutParams );

    this.addView( m_clButton );
}

protected void onSizeChanged( int   i32Width,
                              int   i32Height,
                              int   i32OldWidth,
                              int   i32OldHeight )
{
    int i;
    int i32ButtonWidth = ( i32Width / 7 );
    int i32ButtonHeight = ( i32Height / 7 );
    int i32PosX;
    int i32PosY;

    if ( i32ButtonWidth > i32ButtonHeight )
        i32ButtonWidth = i32ButtonHeight;
    else if ( i32ButtonHeight > i32ButtonWidth )
        i32ButtonHeight = i32ButtonWidth;

    i32PosX = ( i32Width / 2 ) - ( ( i32ButtonWidth * 7 ) / 2 );
    i32PosY = ( i32Height / 2 ) - ( ( i32ButtonHeight * 7 ) / 2 );

    LayoutParams    clLayoutParams = (LayoutParams) m_clButton.getLayoutParams();

    clLayoutParams.x = i32PosX;
    clLayoutParams.y = i32PosY;
    clLayoutParams.width = i32ButtonWidth;
    clLayoutParams.height = i32ButtonHeight;

    m_clButton.setLayoutParams( clLayoutParams );
    m_clButton.invalidate();

    this.invalidate();
}
}

我正在尝试调整函数onSizeChanged中创建的按钮的大小,因为我已经知道这是我第一次知道我的视图有多大。调用像

这样的东西
m_clButton.invalidate();
m_clButton.postInvalidate();
this.invalidate();

没有所需的结果。 视图位于选项卡内。如果我第一次单击选项卡以显示此布局按钮是10 x 10(我在构造函数中创建),我已调试代码,它运行onSizeChanged但按钮未调整大小。 如果我显示另一个视图并再次单击此选项卡,则会调整按钮的大小。

我认为问题是刷新函数onSizeChanged()中的视图,但是怎么做呢???

提前致谢...

Hasan Caliskan

0 个答案:

没有答案