我正在开发一个应用程序,我需要用户在其中设置一个包含 30 个值的数组并使其用户友好且易于使用,我决定使用一系列 SeekBars 和 EditText 小部件。我正在使用 Eclipse 并用它来设置布局。
我正在寻找一种有效的方法来设置应用程序以在 EditText 的值发生更改时自动更新 SeekBar 的值,然后在应用程序整数数组中使用相同的值。
<p></p>
<p><code><SeekBar android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:max="255"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:padding="10dp"
android:id="@+id/seekX"></SeekBar>
<EditText android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".01"
android:minWidth="50sp"
android:maxWidth="50sp"
android:gravity="center_horizontal"
android:padding="10dp"
android:layout_marginRight="10dp"
android:inputType="number"
android:id="@+id/editX"></EditText></code>
</p>
搜索栏和 EditText 字段以相应的方式命名,editX 应与 seekX 匹配,因为 editY 应与 seekY 匹配,依此类推。我还将这些值存储在 int[] upgradeValues 中。
我还设置了 SeekBar 的最大值为 255,但我需要一种方法来自动将 EditText 字段中设置的任何值从 255 向下更改为 255,同样将任何低于 0 的值更改为 0。
基本上,我需要一种有效的方法来制作“(ValueOF)seekX = (ValueOf)editX = (ValueOf)upgradeValues[x] >= 0 <= 255”,并在 seekX 或 editX 更改时进行更新。
最佳答案
我对 Android 开发还是很陌生,所以这个答案不是很具体,但希望它能帮助你上路。
有几种方法。您可以在搜索栏和更新另一个值的编辑文本上设置更改监听器(假设您有 EditText t、SeekBar b 和模型中的值:
b.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(final SeekBar seekBar,
final int progress,
final boolean fromUser)
{
if (fromUser)
{
model = progress;
updateUI();
}
}
@Override
public void onStartTrackingTouch(final SeekBar seekBar)
{
}
@Override
public void onStopTrackingTouch(final SeekBar seekBar)
{
}
});
t.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(final View v,
final int keyCode,
final KeyEvent event)
{
model = Integer.parseInt(t.getText().toString());
updateUI();
return true;
}
});
然后 updateUI() 会是这样的:
private void updateUI()
{
t.setText(model);
b.setProgress(model);
}
这些都是一些疯狂的名字,我显然没有进行错误检查。但是你明白了。这可能不是您想要的方式,因为您必须确保捕获用户与每个组件交互的所有不同方式(onKey 可能不足以检测 EditText 值何时更改)。
正确的 (MVC) 方法是让您的模型(您的 int[])包含该值,并让您的 SeekBar 和 EditText 使用您的模型作为它们的模型。我不知道如何在 Android 的 UI 模型中做到这一点。
关于android - Seekbars 和 EditTexts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3781885/