android 按钮1触发按钮2,在其他xml文件中的Android触发按钮

使用LayoutInflater:

public class Main extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

LayoutInflater inflater = this.getLayoutInflater();

LinearLayout v = (LinearLayout)inflater.inflate(R.layout.hello, null);

Button bt1 = (Button)v.findViewById(R.id.btLog);

bt1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

}

});

}

}

UPDATE * 可膨胀布局 *

public class ExpandablePanel extends LinearLayout {

private final int mHandleId;

private final int mContentId;

private View mHandle;

private View mContent;

private boolean mExpanded = false;

private int mCollapsedHeight = 0;

private int mContentHeight = 0;

private int mAnimationDuration = 0;

private OnExpandListener mListener;

public ExpandablePanel(Context context) {

this(context, null);

}

public ExpandablePanel(Context context, AttributeSet attrs) {

super(context, attrs);

mListener = new DefaultOnExpandListener();

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ExpandablePanel, 0, 0);

// How high the content should be in "collapsed" state

mCollapsedHeight = (int) a.getDimension(R.styleable.ExpandablePanel_collapsedHeight, 0.0f);

// How long the animation should take

mAnimationDuration = a.getInteger(R.styleable.ExpandablePanel_animationDuration, 500);

int handleId = a.getResourceId(R.styleable.ExpandablePanel_handle, 0);

if (handleId == 0) {

throw new IllegalArgumentException(

"The handle attribute is required and must refer "

+ "to a valid child.");

}

int contentId = a.getResourceId(R.styleable.ExpandablePanel_content, 0);

if (contentId == 0) {

throw new IllegalArgumentException("The content attribute is required and must refer to a valid child.");

}

mHandleId = handleId;

mContentId = contentId;

a.recycle();

}

public void setOnExpandListener(OnExpandListener listener) {

mListener = listener;

}

public void setCollapsedHeight(int collapsedHeight) { mCollapsedHeight = collapsedHeight; android.view.ViewGroup.LayoutParams lp = mContent.getLayoutParams(); lp.height = mCollapsedHeight; mContent.setLayoutParams(lp); }

public void setAnimationDuration(int animationDuration) {

mAnimationDuration = animationDuration;

}

@Override

protected void onFinishInflate() {

super.onFinishInflate();

mHandle = findViewById(mHandleId);

if (mHandle == null) {

throw new IllegalArgumentException(

"The handle attribute is must refer to an"

+ " existing child.");

}

mContent = findViewById(mContentId);

if (mContent == null) {

throw new IllegalArgumentException(

"The content attribute must refer to an"

+ " existing child.");

}

android.view.ViewGroup.LayoutParams lp = mContent.getLayoutParams();

lp.height = mCollapsedHeight;

mContent.setLayoutParams(lp);

mHandle.setOnClickListener(new PanelToggler());

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

// First, measure how high content wants to be

mContent.measure(widthMeasureSpec, MeasureSpec.UNSPECIFIED);

mContentHeight = mContent.getMeasuredHeight();

if (mContentHeight < mCollapsedHeight) {

mHandle.setVisibility(View.GONE);

} else {

mHandle.setVisibility(View.VISIBLE);

}

// Then let the usual thing happen

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

private class PanelToggler implements OnClickListener {

public void onClick(View v) {

Animation a;

if (mExpanded) {

a = new ExpandAnimation(mContentHeight, mCollapsedHeight);

mListener.onCollapse(mHandle, mContent);

} else {

a = new ExpandAnimation(mCollapsedHeight, mContentHeight);

mListener.onExpand(mHandle, mContent);

}

a.setDuration(mAnimationDuration);

if(mContent.getLayoutParams().height == 0) //Need to do this or else the animation will not play if the height is 0

{

android.view.ViewGroup.LayoutParams lp = mContent.getLayoutParams();

lp.height = 1;

mContent.setLayoutParams(lp);

mContent.requestLayout();

}

mContent.startAnimation(a);

mExpanded = !mExpanded;

}

}

private class ExpandAnimation extends Animation {

private final int mStartHeight;

private final int mDeltaHeight;

public ExpandAnimation(int startHeight, int endHeight) {

mStartHeight = startHeight;

mDeltaHeight = endHeight - startHeight;

}

@Override

protected void applyTransformation(float interpolatedTime, Transformation t) {

android.view.ViewGroup.LayoutParams lp = mContent.getLayoutParams();

lp.height = (int) (mStartHeight + mDeltaHeight * interpolatedTime);

mContent.setLayoutParams(lp);

}

@Override

public boolean willChangeBounds() {

return true;

}

}

public interface OnExpandListener {

public void onExpand(View handle, View content);

public void onCollapse(View handle, View content);

}

private class DefaultOnExpandListener implements OnExpandListener {

public void onCollapse(View handle, View content) {}

public void onExpand(View handle, View content) {}

}

}

布局: 将这个顶部领域:xmlns:CL =“HTTP://模式.android.com/res/com.example.androidapp.widgets“ Eclipse将始终在此布局中指示错误,因为抛出异常在ExpandablePanel.class中,所以你可以隐藏这些行来查看可展开的布局是如何出现的,并设置他的按钮和文本子。

android:id="@+id/theId"

android:layout_width="fill_parent"

android:layout_height="match_parent"

android:orientation="vertical"

app:collapsedHeight="80dp"

app:content="@+id/value"

app:handle="@+id/expand"

cl:collapsedHeight="50dip"

cl:content="@+id/value"

cl:handle="@+id/expand" >

android:id="@id/value"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="hejahdkashfa afsjkhas lf ksajfh as fkjsah asf kfsahkjfas klfajsh flkas klfajsh lasfkl aklfsjh klsa ffhaskljfha dfasfa s safjsfkhasjkf fjakshfjkasf jksfhjkasf sjakfhas kjfa sjkfhakjsfh asjsfhkjashf askjsf sakjfh as fadsfasf af asf asf" />

android:id="@id/expand"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_vertical|center_horizontal"

android:text="More" />

如何设置扩展面板:

// Set expandable panel listener

ExpandablePanel panel = (ExpandablePanel)findViewById(R.id.theId);

panel.setCollapsedHeight(50);

panel.setContentDescription(descricao);

panel.setOnExpandListener(new ExpandablePanel.OnExpandListener() {

public void onCollapse(View handle, View content) {

Button btn = (Button)handle;

btn.setText("More");

}

public void onExpand(View handle, View content) {

Button btn = (Button)handle;

btn.setText("Less");

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值