mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
AndroidGCS Tuning: Create a view that includes a scroll bar and edit box coupled together.
This commit is contained in:
parent
2c21038d74
commit
7c48b46adf
@ -1,7 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" >
|
||||
|
||||
</ListView>
|
||||
<org.openpilot.androidgcs.views.ScrollBarView
|
||||
android:id="@+id/rollRateKp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,67 @@
|
||||
package org.openpilot.androidgcs.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.widget.EditText;
|
||||
import android.widget.GridLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class ScrollBarView extends GridLayout {
|
||||
|
||||
private final static String TAG = ScrollBarView.class.getSimpleName();
|
||||
|
||||
private final TextView lbl;
|
||||
private final EditText edit;
|
||||
private final SeekBar bar;
|
||||
private double value;
|
||||
|
||||
private final double SCALE = 1000000;
|
||||
|
||||
public ScrollBarView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
Log.d(TAG, "Scroll bar init called");
|
||||
|
||||
setOrientation(LinearLayout.VERTICAL);
|
||||
setColumnCount(2);
|
||||
|
||||
lbl = new TextView(context);
|
||||
lbl.setText("Roll Rate Kp:");
|
||||
addView(lbl, new GridLayout.LayoutParams(spec(0), spec(0)));
|
||||
|
||||
edit = new EditText(context);
|
||||
addView(edit, new GridLayout.LayoutParams(spec(0), spec(1)));
|
||||
|
||||
bar = new SeekBar(context);
|
||||
addView(bar, new GridLayout.LayoutParams(spec(1), spec(0,2)));
|
||||
bar.setMax((int) (SCALE * 0.01));
|
||||
|
||||
setPadding(5,5,5,5);
|
||||
|
||||
setValue(0.0035);
|
||||
}
|
||||
|
||||
public void setValue(double val)
|
||||
{
|
||||
value = val;
|
||||
edit.setText(Double.toString(val));
|
||||
bar.setProgress((int) (SCALE * val));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
|
||||
// This shouldn't be needed if I could make this scroll bar
|
||||
// automagically span both columns
|
||||
android.view.ViewGroup.LayoutParams param = bar.getLayoutParams();
|
||||
param.width = (int) (getMeasuredWidth() * 0.9);
|
||||
|
||||
// Force the label to half the page width
|
||||
param = lbl.getLayoutParams();
|
||||
param.width = getMeasuredWidth() / 2;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user