2017-03-20 66 views
1

我想要显示一个开/关状态的开关按钮,放大整个列表视图并用关/状态返回到正常的前一个视图。我已经设法创建了切换按钮,但是当它被按下时,它会扩大自己而不是列表视图。如何关联切换按钮来放大/关闭整个列表视图?提前致谢。如何通过切换按钮调整整个列表视图?

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<ListView 
    android:id="@+id/tvList" 
    android:layout_width="match_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1"/> 

<ToggleButton 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/toggle_button" 
    android:textOn="Resize On" 
    android:textOff="Resize Off" 
    android:layout_weight="0.03" 
    android:onClick="changeSizeState"/> 

import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.ToggleButton; 
import android.view.ViewGroup.LayoutParams; 
import static john.android.study.R.id.tvList; 



public class MainActivity extends Activity { 

    private ListView lvPhone; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     lvPhone = (ListView)findViewById(R.id.tvList); 

     String[] values = new String[]{"Nikos", "Yiannis", "Kostas", "Thanasis", "Paulos",}; 

     ListView lvPhone = (ListView)findViewById(tvList); 

     List<PhoneBook> listPhoneBook = new ArrayList<PhoneBook>(); 

     for (String value : values) { 
      PhoneBook entry = new PhoneBook(value); 
      listPhoneBook.add(entry); 
     } 

     PhoneBookAdapter adapter = new PhoneBookAdapter(this,listPhoneBook); 
     lvPhone.setAdapter(adapter); 
    } 
    public void changeSizeState (View view){ 
     boolean checked = ((ToggleButton)view).isChecked(); 
     if(checked) { 
      LayoutParams params = view.getLayoutParams(); 
      params.height = 250; 
      view.setLayoutParams(params); 
     } 
    } 
} 
+0

只是使用片段 – ArolaAb

回答

1

要设置布局PARAMS到的toogle按钮,尝试在listview

public void changeSizeState (View view){ 
     boolean checked = ((ToggleButton)view).isChecked(); 
     if(checked) { 
      LayoutParams params = view.getLayoutParams(); 
      params.height = 250; 
      lvPhone.setLayoutParams(params); 
     } 
    } 

你也发起onCreatelistView,修改如下图所示:

lvPhone = (ListView)findViewById(tvList); 

希望这会有所帮助。

+0

感谢您的答案。你是什​​么意思尝试在列表视图? –

+0

你想放大listView的高度。所以将布局参数设置为listview,这就是我的意思。 – tahsinRupam

+0

@Anathematismeno_Morio它有效吗? – tahsinRupam