android 簡單的兩步實現Play上的文本伸縮功能


經常上google play下載軟件,看到它的伸縮式的軟件介紹很感興趣。功能截圖如下:

點擊文本會下拉更多詳細介紹,實現這一功能很簡單,廢話不多說,直接上代碼

 

 private boolean isExpanded = false;
    private int lastHeight = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_expand_in_context);

        final ViewGroup expandableContainer = (ViewGroup) findViewById(R.id.expandable_container);

        findViewById(R.id.expandable_text).setOnClickListener(
                new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        if (isExpanded) {
                            ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) expandableContainer
                                    .getLayoutParams();

                            params.height = lastHeight;

                            expandableContainer.setLayoutParams(params);
                            expandableContainer.invalidate();
                        } else {
                            lastHeight = expandableContainer.getHeight();

                            ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) expandableContainer
                                    .getLayoutParams();

                            params.height = ViewGroup.LayoutParams.WRAP_CONTENT;

                            expandableContainer.setLayoutParams(params);
                            expandableContainer.invalidate();
                        }

                        isExpanded = !isExpanded;

                    }
                });

    }

布局只需要這樣:

 <FrameLayout
            android:id="@+id/expandable_container"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_below="@+id/above"
            android:layout_margin="15dp"
             >

            <TextView
                android:id="@+id/expandable_text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:ellipsize="end"
                android:text="@string/loremipsum" 
                android:clickable="true"/>
        </FrameLayout>

父布局限定了可限示的高度,可以使文本不用一次性全部顯示,為屏幕節省空間。等用戶點擊查時才一次性顯示全部給用戶,再一次點擊則隱藏掉。。原理很簡單。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM