Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 缩放列表视图_Android_Listview_Zooming - Fatal编程技术网

Android 缩放列表视图

Android 缩放列表视图,android,listview,zooming,Android,Listview,Zooming,我有一个包含textview的listview,我需要在单击按钮时缩放此textview,但我无法做到这一点,我尝试了所有方法覆盖SimpleCorsor适配器并覆盖getview()方法,但无法在单击按钮时缩放textview,按钮在listview之外,我的代码是: 这是listview布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.

我有一个包含textview的listview,我需要在单击按钮时缩放此textview,但我无法做到这一点,我尝试了所有方法覆盖SimpleCorsor适配器并覆盖getview()方法,但无法在单击按钮时缩放textview,按钮在listview之外,我的代码是:

这是listview布局:

<?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:orientation="horizontal" >

  <CheckBox
 android:id="@+id/bt_rating"
 android:focusable="false"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_vertical"
 android:button="@android:drawable/btn_star"
 android:onClick="onclick"/>

<TextView
android:id="@+id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/FontSizeInListView"
android:gravity="right"
 />
</LinearLayout>
这样我就得到了文本视图,但确保只渲染最后创建的文本,并在缩放中执行
tv.settextsize(..)

但只有在页面上创建的最后一个textview会更改,因为我只有该textview的id,因此如何获取所有textview而不仅仅是最后一个创建的textview?

在自定义适配器中,添加一个变量(带有公共setter和getter)来表示缩放级别。在
getView
方法中,使用此变量更改文本视图的文本大小(只需将其添加到返回行之前)。必须始终将大小设置为某个值,因为视图是重复使用的


然后,在更改缩放级别的按钮上,更改适配器的缩放变量,然后对其调用
notifyDataSetChanged
,以强制其在所有可见视图上调用
getView
。(这是假设您将ArrayAdapter子类化)。

我所做的工作是:

adapter =new SimpleCursorAdapter(this,R.layout.rating,cu,new String[]{"Title","Fav"}, new int[]{R.id.text1,R.id.bt_rating},CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);   
          //added in last update
            adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
                   /** Binds the Cursor column defined by the specified index to the specified view */
                public boolean setViewValue(View view, Cursor cursor, int columnIndex){


                    if(view.getId() == R.id.text1){
                    tv=(TextView)view;     
                    tv.setTextSize(SizeOfTextInListView);
                    }
}))

在“缩放”按钮中:

 //zoom in button click
        final Button zoom_in_btn = (Button) findViewById(R.id.button_zoom_in);
        zoom_in_btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            if(Zoom_counter<10){
                  SizeOfTextInListView= SizeOfTextInListView+Zoom_In_Out_value;
                  adapter.notifyDataSetChanged();
                        Zoom_counter++;


            }
            } 
        });
//放大按钮点击
最终按钮zoom_in_btn=(按钮)findViewById(R.id.Button_zoom_in);
放大\u btn.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){

如果(Zoom_Counter你需要一个自定义列表适配器。如果你已经在使用一个,你能发布你的getView方法吗?我想它开始工作了,我做了一些其他的事情,它开始工作了。明天就会看到。因为在我的方法中,我有一个文本视图,它变大了,其他的很少,但其余的保持不变。我会看看如何解决这个问题。但是在least它起作用了。如果你不在
getView
中修改它,你会有很多像你刚才描述的不可预测的行为。列表视图定期回收刚刚从屏幕上滚动下来的视图,作为滚动到屏幕上的新视图使用。当一个视图被回收时,它只会改变你在
g中告诉它要改变的内容etView
 //zoom in button click
        final Button zoom_in_btn = (Button) findViewById(R.id.button_zoom_in);
        zoom_in_btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            if(Zoom_counter<10){
                  SizeOfTextInListView= SizeOfTextInListView+Zoom_In_Out_value;
                  adapter.notifyDataSetChanged();
                        Zoom_counter++;


            }
            } 
        });