【问题标题】:How to change a lot of textview to scrolled list layout如何将大量文本视图更改为滚动列表布局
【发布时间】:2015-01-28 23:06:58
【问题描述】:

我是编程初学者,我需要你的帮助。我必须编写将传感器结果显示为文本的应用程序,并且我以错误的方式进行了操作(代码正在运行,但是当屏幕不滚动时)。

下面我复制 XML 文件:

android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/rLight"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" 
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/rPressure"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rLight"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/rHumidity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rPressure"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/rProximity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rHumidity"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/rTemp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rProximity"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rAccel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rTemp"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rGyro"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rAccel"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rMag"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rGyro"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rRotation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rMag"/>

 <TextView
    android:id="@+id/rGravity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rRotation"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/rSCounter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rGravity"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rSDetector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rSCounter"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rLinearAcc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rSDetector"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rSignMotion"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rLinearAcc"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <TextView
    android:id="@+id/rNoise"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rSignMotion"
    android:textAppearance="?android:attr/textAppearanceMedium" />

这是主类:

公共类 MainActivity 扩展 Activity 实现 EventListener、StepCounterListener、LinearAccListener、StepDetectorListener、LightSensorListener、PressureSensorListener、GravitySensorListener、RotationVectorListener、RelativeHumidityListener、ProximitySensorListener、TempSensorListener、AccelerometerSensorListener、GyroSensorListener、MagSensorListener {

private TextView lightText, pressureText, signText, noiseText, humidityText, linearAccText, proximityText, tempText, accelText, gyroText, magText, rotationText, gravityText, stepDetectorText, stepCounterText;
private LightSensor mLightSensor;
private PressureSensor mPressureSensor;
private RelativeHumiditySensor mRelativeHumidity;
private ProximitySensor mProximitySensor;
private TemperatureSensor mTempSensor;
private AccelerometerSensor mAccelSensor;    
private GyroscopeSensor mGyroSensor;
private MagnetometerSensor mMagSensor;
private RotationSensor mRotSensor;
private GravitySensor mGravitySensor;
private StepCounterSensor mStepCounter;
private StepDetectorSensor mStepDetector;
private LinearAccelerometer mLinearAcc;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);

    lightText = (TextView)findViewById(R.id.rLight);
    pressureText = (TextView)findViewById(R.id.rPressure);
    humidityText = (TextView)findViewById(R.id.rHumidity);
    proximityText = (TextView)findViewById(R.id.rProximity);
    tempText = (TextView)findViewById(R.id.rTemp);
    accelText = (TextView)findViewById(R.id.rAccel);
    gyroText = (TextView)findViewById(R.id.rGyro);
    magText = (TextView)findViewById(R.id.rMag);
    rotationText = (TextView)findViewById(R.id.rRotation);
    gravityText = (TextView)findViewById(R.id.rGravity);
    stepCounterText = (TextView)findViewById(R.id.rSCounter);
    stepDetectorText = (TextView)findViewById(R.id.rSDetector);
    linearAccText = (TextView)findViewById(R.id.rLinearAcc);
    signText = (TextView)findViewById(R.id.rSignMotion);
    noiseText = (TextView)findViewById(R.id.rNoise);


    mLightSensor = new LightSensor(getBaseContext());
    mLightSensor.setListener(this);

    mPressureSensor = new PressureSensor(getBaseContext());
    mPressureSensor.setListener(this);

    mRelativeHumidity = new RelativeHumiditySensor(getBaseContext());
    mRelativeHumidity.setListener(this);

    mProximitySensor = new ProximitySensor(getBaseContext());
    mProximitySensor.setListener(this);

    mTempSensor = new TemperatureSensor(getBaseContext());
    mTempSensor.setListener((TempSensorListener) this);
    [...]

}


public void onLightSensorChanged(String lux){
    lightText.setText("LIGHT level: " + lux);
}

public void onPressureSensorChanged(String pressure){
    //items.add("PRESSURE: " + pressure);
    pressureText.setText("PRESSURE: " + pressure);
}

[...]

我尝试使用 ArrayString、listAdapter 但我总是有很多错误..请帮助

【问题讨论】:

  • 使用滚动视图。由于 ScrollView 只能有一个直接子视图,因此您需要先将所有视图包装在一个组视图中(例如 LinearLayout),然后将此 LinearLayout 放入 ScrollView 中。更好的解决方案是使用 ListView

标签: android android-layout listview layout android-listview


【解决方案1】:
<?xml version="1.0" encoding="UTF-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">
        <TextView
            android:id="@+id/rLight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/rPressure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        .....................

    </LinearLayout>
</ScrollView>

【讨论】:

    【解决方案2】:

    您需要使用滚动视图,只需在其中插入您的 XML 内容,它应该可以工作:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <ScrollView
            android:id="@+id/scrollView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
    
        </ScrollView>
    
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多