【问题标题】:Pinch zooming, textview捏缩放,文本视图
【发布时间】:2016-11-29 20:37:07
【问题描述】:

我正在尝试创建一个为用户显示歌词的应用。歌词存储在 values/strings.xml 中,并在访问活动时显示给用户。 (我不确定这是否是一种好方法)。

根据每行文本的长度,我不知道我应该使用哪个文本大小,我真的可以使用一些“捏拉缩放”功能。

但是,我不知道是否可以“捏”放大文本视图。我在 webviews 和 imageviews 上找到了各种方法,但对于 textviews 没有。

我正在寻找通过“捏”增加文本大小/缩放布局的最佳方法

也非常欢迎提供有关如何存储字符串和显示的帮助。

干杯!

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    我是 Android 开发的新手,并试图弄清楚这一点。我有使用捏缩放的测试应用程序,但问题在https://stackoverflow.com/questions/14306908/textview-in-a-scrollview-with-pinch-zoom

    不过,这行得通

    package com.example.pinchzoom;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.util.TypedValue;
    import android.view.Menu;
    import android.view.MotionEvent;
    import android.view.ScaleGestureDetector;
    import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        TextView scaleGesture;
        ScaleGestureDetector scaleGestureDetector;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            scaleGesture = (TextView)findViewById(R.id.article);
            scaleGesture.setText("this is some text");
            scaleGestureDetector = new ScaleGestureDetector(this, new simpleOnScaleGestureListener());
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            // TODO Auto-generated method stub
            scaleGestureDetector.onTouchEvent(event);
            return true;
        }
    
        public class simpleOnScaleGestureListener extends
                SimpleOnScaleGestureListener {
    
            @Override
            public boolean onScale(ScaleGestureDetector detector) {
                // TODO Auto-generated method stub
                float size = scaleGesture.getTextSize();
                Log.d("TextSizeStart", String.valueOf(size));
    
                float factor = detector.getScaleFactor();
                Log.d("Factor", String.valueOf(factor));
    
    
                float product = size*factor;
                Log.d("TextSize", String.valueOf(product));
                scaleGesture.setTextSize(TypedValue.COMPLEX_UNIT_PX, product);
    
                size = scaleGesture.getTextSize();
                Log.d("TextSizeEnd", String.valueOf(size));
                return true;
            }
        }
    }
    

    景色

    <RelativeLayout 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"
        tools:context=".MainActivity" >
        <TextView
            android:id="@+id/article"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>
    

    【讨论】:

    • hi.. textview 的旋转是否可行?
    • 您的代码没有实现 View.onTouchListener。我尝试了您的代码,并且 onTouchEvent 引发错误,因为它不在超类中,为什么要使用 @Override
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多