相关疑难解决方法(0)

Android:展开/折叠动画

假设我有一个垂直linearLayout:

[v1]
[v2]
Run Code Online (Sandbox Code Playgroud)

默认情况下,v1具有visibily = GONE.我想用扩展动画展示v1并同时向下推v2.

我试过这样的事情:

Animation a = new Animation()
{
    int initialHeight;

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        final int newHeight = (int)(initialHeight * interpolatedTime);
        v.getLayoutParams().height = newHeight;
        v.requestLayout();
    }

    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
        initialHeight = height;
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }
};
Run Code Online (Sandbox Code Playgroud)

但是使用这个解决方案,动画开始时我会闪烁.我认为这是由v1在应用动画之前显示完整大小引起的.

使用javascript,这是一行jQuery!用android做任何简单的方法吗?

animation android

435
推荐指数
18
解决办法
26万
查看次数

Android:在绘制之前获取视图的高度

对于动画,我需要知道视图的高度.问题是,除非绘制View,否则getHeight()方法总是返回0.那么有没有办法获得高度而不绘制它?

在这种情况下,View是LinearLayout.

编辑:我尝试从https://github.com/Udinic/SmallExamples/blob/master/ExpandAnimationExample/src/com/udinic/expand_animation_example/ExpandAnimation.java改编扩展动画

有了它,我想为列表项扩展一些更多的信息.我无法通过xml实现相同的效果.目前,当您在绘制之前知道布局大小时,动画才会起作用.

height layout android view

48
推荐指数
5
解决办法
5万
查看次数

Android Expandable RecyclerView不同卡高

我有一个包含卡片列表的RecyclerView,每个卡片都扩展为子卡片.
每张卡片都有不同的文字.我希望当用户点击子卡时,它会展开以显示内部文本.扩展高度取决于卡包含的文本量.

我尝试使用以下方法测量目标高度:

view.Measure(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
Run Code Online (Sandbox Code Playgroud)

然后将卡扩展到Measured Height(参见此处).但是,它为所有卡提供相同的测量高度.

这是我的代码,它基于(更具体地说是Xamarin版本):

这是主适配器,它创建并绑定父卡和子卡:

public class HalachaExpandableAdapter : ExpandableRecyclerAdapter<HalachaParentViewHolder, HalachaChildViewHolder>, View.IOnClickListener
{
    LayoutInflater _inflater;
    bool expand;
    int targetHeight;
    bool wave = false;

    public HalachaExpandableAdapter(Context context, List<IParentObject> itemList) : base(context, itemList)
    {
        _inflater = LayoutInflater.From(context);
    }

    public override void OnBindChildViewHolder(HalachaChildViewHolder childViewHolder, int position, object childObject)
    {
        var halachaChild = (HalachaChild)childObject;
        childViewHolder.halachaChildTitle.Text = halachaChild.Title.ToString();

        targetHeight = childViewHolder.halachaChildCard.Height;
        childViewHolder.halachaChildCard.LayoutParameters.Height = 100;
        childViewHolder.halachaChildCard.SetOnClickListener(this);
        expand = childViewHolder.expand;

    }

    public override void OnBindParentViewHolder(HalachaParentViewHolder parentViewHolder, int …
Run Code Online (Sandbox Code Playgroud)

java android android-layout xamarin.android xamarin

17
推荐指数
1
解决办法
697
查看次数