我不太清楚如何问这个问题,但我需要一个滚动视图,它将随着幅度可视化器一起滚动,因为它会记录音频。编辑:要清楚,ScrollView即使触摸和手势也不滚动。如何使HorizontalScrollView滚动一个自定义View子
下面是具有自定义视图的应用程序的屏幕截图。红色条显示一秒钟的平均幅度。
酒吧从左到右填充,但是当它到达边缘它不会滚动。
下面是该HorizontalScrollView和AudioVisualizer视图中的XML:
<HorizontalScrollView
android:id="@+id/hsv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<com.blueteam.audiotes.AudioVisualizer
android:id="@+id/visualizer"
android:layout_width="match_parent"
android:layout_height="200dp" />
</HorizontalScrollView>
下面是该AudioVisualizer元素的代码:
package com.blueteam.audiotes;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import java.util.ArrayList;
/**
* Created by tanner on 3/21/17.
*/
public class AudioVisualizer extends View {
private final int BAR_WIDTH = 10;
private final int BAR_STARTING_POINT = 0;
private final int BAR_SPACE = 2;
private final int BAR_BOTTOM = 200;
private final int BAR_MINIMUM_HEIGHT = 20;
private ArrayList<Rect> bars;
private Paint paint;
private ArrayList<Tag> tags;
public AudioVisualizer(Context context, AttributeSet attrs) {
super(context, attrs);
bars = new ArrayList<Rect>();
paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
for(Rect r : bars)
canvas.drawRect(r.left, r.top, r.right, r.bottom, paint);
}
public void addBar(int height) {
if (height < BAR_MINIMUM_HEIGHT)
height = BAR_MINIMUM_HEIGHT;
else if (height > BAR_BOTTOM)
height = BAR_BOTTOM;
bars.add(new Rect(BAR_STARTING_POINT + bars.size() * (BAR_SPACE + BAR_WIDTH),
BAR_BOTTOM - height,
(BAR_STARTING_POINT + bars.size() * (BAR_SPACE + BAR_WIDTH)) + BAR_WIDTH,
BAR_BOTTOM));
}
}
我尝试设置AudioVisualizer宽度像2000只是为了看看如果它在孩子明显大于ScrollView时滚动,但仍然不起作用。
我在猜测我错过了一些简单的东西。
对不起,我原来的帖子并不清楚。即使触摸手势,我也无法滚动。我加了这个,但它没有改变任何东西。但是你确实解决了我遇到的另一个问题。 – triggdev