1. 程式人生 > >Android建立顯示區高度可以調整的ScrollView

Android建立顯示區高度可以調整的ScrollView

導言:我們在用到ScrollView時,有時候需要它的顯示區高度可以調整,比如一段話放到ScrollView中,當這段話只有一行時,我們設定ScrollView的高度為20;有兩行時,我們設定ScrollView的高度為40;有三行或更多行時,設定ScrollView的高度為60(超過三行後,自動出滾動條)

方法:將ScrollView放到一個LinearLayout中,將ScrollView的高度設定成match_parent,在程式碼中動態設定LinearLayout的高度,達到ScrollView高度動態通過Java程式碼設定的效果。

效果圖:

點選前


點選後


程式碼:

MainActivity.java:

public class MainActivity extends AppCompatActivity {
    Button btn;
    LinearLayout ll;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.btn);
        ll 
= (LinearLayout) findViewById(R.id.ll); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams(); int llHeight = ll.getHeight(); if
(llHeight == 80) { lp.height = 120; } else { lp.height = 80; } ll.setLayoutParams(lp); } }); } }
佈局檔案:
<?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="vertical">
    <Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="center"
android:text="調整" />
    <LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="80dp">
        <ScrollView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#dddddd">
            <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="aaaaaaaaaaaaaa\naaaaaaaaaaaaaaaa\naaaabbbbbbbbbbbbb\nbbbbbbbbbbbbbb\nbbbbbbbcccccccccccccccc\nccccccccccccc\nccccccccccccccccccccccccccccccc
            eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" />
        </ScrollView>
    </LinearLayout>
</LinearLayout>