android - 根据搜索栏位置动态添加视图
问题描述
是否可以使用 android 中搜索栏的值向活动添加视图?
例如,如果用户在搜索栏上选择并滚动到值 2,这将在同一个活动中加载两个较小的图像视图
任何帮助表示赞赏。
解决方案
我一直在研究这个问题,这是我的解决方案。它可能并不完美,所以请告诉我是否有需要改进的地方。
这就是结果。
1.创建一个新项目并下载这些示例图像。将图像文件保存到项目的res/drawable/
目录中。
2.打开res/layout/activity_main.xml
文件并插入以下内容:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:max="10" />
</LinearLayout>
</ScrollView>
3.打开MainActivity.java
并为该onCreate()
方法插入以下代码:
MainActivity.java
package com.grrigore.dynamicgridview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
public class MainActivity extends AppCompatActivity {
private int numberOfCurrentImages = 0;
private int[] images = {
R.drawable.sample_0,
R.drawable.sample_1,
R.drawable.sample_2,
R.drawable.sample_3,
R.drawable.sample_4,
R.drawable.sample_5,
R.drawable.sample_6,
R.drawable.sample_7,
R.drawable.sample_0,
R.drawable.sample_1,
R.drawable.sample_2
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LinearLayout linearLayout = findViewById(R.id.linearLayout);
SeekBar seekBar = findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
for (int i = numberOfCurrentImages; i < progress; i++) {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(images[numberOfCurrentImages]);
linearLayout.addView(imageView);
numberOfCurrentImages++;
}
if (progress == 0 && linearLayout.getChildCount() > 1) {
linearLayout.removeViews(1, numberOfCurrentImages);
numberOfCurrentImages = 0;
}
if (progress < numberOfCurrentImages) {
for (int i = numberOfCurrentImages; i > progress; i--) {
linearLayout.removeViewAt(i);
}
numberOfCurrentImages = progress;
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
谢谢:
推荐阅读
- javascript - 如何将超时变量分配给
Vuetify 中的标签? - java - 邮递员原始身体响应为 400
- windows - 对 GENERIC_EXECUTE 的 OpenSCManager 调用失败
- c++ - constexpr 类中的引用字段
- r - R中的最大堆栈大小
- python-3.x - 如何修复此 Python Tic-Tac-Toe 代码错误
- kubernetes - 使用 python 客户端删除 Kubernetes 资源
- mysql - Trying to populate two tables with a pivot between them
- sql - 有条件地重新标记行值
- typescript - 在typescrpit中将字符串联合转换为字符串枚举