【发布时间】:2021-07-18 15:44:29
【问题描述】:
我正在创建一个简单的 Android 应用,用户可以在其中向左拖动 SeekBar 以显示较少的图像,向右拖动以显示更多图像。这是通过将侦听器附加到SeekBar 来实现的,其中ImageView 的宽度与SeekBar 的进度成比例变化。 问题是无论滑块在什么位置,ImageView的宽度保持不变,如下截图所示:
进度 = 0%:
进度 = 100%
这似乎很奇怪,考虑到在SeekBar 的侦听器中,当我输出我将ImageView 宽度设置为的值时,该值是正确的。
下面是我的代码:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:gravity="center"
android:orientation="vertical">
<SeekBar
android:id="@+id/simpleSeekBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_height="300px"
android:layout_width="300px"
android:orientation="vertical"
android:background="#0000FF">
<ImageView
android:layout_height="300px"
android:layout_width="300px"
android:src="@drawable/android"
android:scaleType="matrix"
android:id="@+id/iv"/>
</LinearLayout>
</LinearLayout>
MainActivity.java:
package com.example.changingimageviewwidth2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SeekBar;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView iv = findViewById(R.id.iv);
SeekBar seekbar = findViewById(R.id.simpleSeekBar);
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
iv.getLayoutParams().width = 300 * progress/100;
System.out.println(300 * progress/100);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//write custom code to on start progress
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
注意:移动滑块时,图像不应调整大小。
【问题讨论】:
-
我为你创造了一些东西。请查看视频,让我看看它的外观 -> streamable.com/1eirol
-
@HarisDautović 这看起来很完美!如果您可以发布您的相应代码,我一定会接受您的回答并奖励赏金。
-
好的,谢谢,我会在 github 上上传功能示例,以便您拉取代码。谢谢