如何在android中创建一个可扩展的视图?

时间:2017-06-28 10:25:33

标签: android

我希望展开单击+按钮的视图,此+符号更改为 - 当视图展开时。再次单击 - 按钮时,视图应缩小。 在视图内部我有一些TextView字段。请任何人建议我。我是android的新手。

2 个答案:

答案 0 :(得分:0)

您可以在运行时在按钮单击事件上显示或消除特定布局,如下面的代码:

findViewById(R.id.yourButtonId).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mainView.setVisibility(View.GONE);
            }
        });

答案 1 :(得分:0)

answer解决了这个问题。

public class ExpandableTextView extends TextView implements OnClickListener
{   
private static final int MAX_LINES = 5;
private int currentMaxLines = Integer.MAX_VALUE;

public ExpandableTextView(Context context)
{
    super(context);
    setOnClickListener(this);
}
public ExpandableTextView(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
    setOnClickListener(this);
}

public ExpandableTextView(Context context, AttributeSet attrs)
{
    super(context, attrs);
    setOnClickListener(this);
}

@Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter)
{
    /* If text longer than MAX_LINES set DrawableBottom - I'm using '...' icon */
    post(new Runnable()
    {
        public void run()
        {
            if (getLineCount()>MAX_LINES)
                setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, R.drawable.icon_more_text);
            else
                setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);

            setMaxLines(MAX_LINES);             
        }
    });
}


@Override
public void setMaxLines(int maxLines)
{
    currentMaxLines = maxLines;
    super.setMaxLines(maxLines);
}

/* Custom method because standard getMaxLines() requires API > 16 */
public int getMyMaxLines()
{
    return currentMaxLines;
}

@Override
public void onClick(View v)
{
    /* Toggle between expanded collapsed states */
    if (getMyMaxLines() == Integer.MAX_VALUE)
        setMaxLines(MAX_LINES);
    else
        setMaxLines(Integer.MAX_VALUE);
}

}