调整片段中 TextView 的文本大小

Posted

技术标签:

【中文标题】调整片段中 TextView 的文本大小【英文标题】:Resize text size of a TextView in a Fragment 【发布时间】:2017-01-06 04:44:36 【问题描述】:

如何更改片段 TextView 的文本大小。我需要它,因为文字很小,也许有些用户希望它变大。 我明白了,有些人建议使用搜索栏或捏合缩放,但我不能让它在片段中工作。 感谢您的帮助。

我的 fragment_one.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="org.aultoon.webovietab.fragments.OneFragment"
android:id="@+id/oneFragmentId"
>



<ScrollView
    android:id="@+id/scrollView"
    android:layout_
    android:layout_
    android:fadingEdge="none"
    android:fillViewport="true"
    >

    <RelativeLayout
        android:layout_
        android:layout_
        android:orientation="vertical"
        android:layout_gravity="top|center"
        android:gravity="center"
        >


<TextView
    android:layout_
    android:layout_
    android:id="@+id/tvFragmentOne"
    android:text="@string/turkce1"
    android:textSize="27sp"
    android:textIsSelectable="true"
    android:layout_margin="10dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    />

        </RelativeLayout>
</ScrollView>

这是我的 OneFragment.java

public class OneFragment extends Fragment 


    //static WebView mWebview;




    public OneFragment() 
        // Required empty public constructor
    


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 

        View rootView = inflater.inflate(R.layout.fragment_one, container, false);

        return rootView;
    

这是我的活动

 public class SimpleTabsActivity extends AppCompatActivity 


    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;



    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple_tabs);


        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(false);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

    


    private void setupViewPager(ViewPager viewPager) 
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new OneFragment(), "tab1");
        adapter.addFragment(new TwoFragment(), "tab2");

        viewPager.setAdapter(adapter);


    

    class ViewPagerAdapter extends FragmentPagerAdapter 
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) 
            super(manager);
        

        @Override
        public Fragment getItem(int position) 
            return mFragmentList.get(position);
        

        @Override
        public int getCount() 
            return mFragmentList.size();
        

        public void addFragment(Fragment fragment, String title) 
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        

        @Override
        public CharSequence getPageTitle(int position) 
            return mFragmentTitleList.get(position);
        
    







    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
        switch (item.getItemId())
            case R.id.aboutMenuItem:
                Intent i = new Intent(this, About_Activity.class);
                startActivity(i);
                return true;

            default:
                return super.onOptionsItemSelected(item);
        
    



【问题讨论】:

请参考此链接:***.com/questions/16082359/… 我认为这是另一个主题。 @DaminiMehra @ali zdnet.com/article/… 我认为使用简单的手势检测器 API,您可以在 textview 中实现捏合缩放,如果您还需要某种代码,请告诉我 【参考方案1】:

首先,请阅读以下关于 android 中 textsize "sp" 单元的问答。您应该了解 为什么它使用 sp 作为单位 textView 并且您的问题应该得到解决。

Should use "sp" instead of "dp" for text sizes

What is the difference between "px", "dp", "dip" and "sp" on Android?

Android sp vs dp texts - what would adjust the 'scale' and what is the philosophy of support

http://www.singhajit.com/tutorial-1-android-ui-desgin-and-styling/

现在,您应该知道 TextView 中“sp”单元的用法,因为它可以根据用户可访问性设置进行调整。也就是说,如果你的老板看不清楚,他/她可以在设备中设置字体大小设置,而不是更改代码。

如果您仍然需要编程的解决方法。这是解决方案

我已在您的片段布局中添加了搜索栏。

更新 xml。

<RelativeLayout android:id="@+id/oneFragmentId"
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_
                android:layout_
    >

    <SeekBar
        android:id="@+id/seekBar"
        android:layout_
        android:layout_
        android:layout_alignParentStart="true"/>

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_
        android:layout_
        android:layout_below="@+id/seekBar"
        android:fadingEdge="none"
        android:fillViewport="true"
        >

        <RelativeLayout
            android:layout_
            android:layout_
            android:layout_gravity="top|center"
            android:gravity="center"
            android:orientation="vertical"
            >


            <TextView
                android:id="@+id/tvFragmentOne"
                android:layout_
                android:layout_
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_margin="10dp"
                android:text="Hello world"
                android:textIsSelectable="true"
                android:textSize="27sp"
                />

        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

我已将您的 textView 文本更改为“Hello world”进行测试,请改回您自己的字符串资源。

这是片段代码。

public class OneFragment extends Fragment 
    //static WebView mWebview;
    public OneFragment() 
        // Required empty public constructor
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) 
        View rootView = inflater.inflate(R.layout.fragment_one, container, false);
        final TextView tvFragmentOne = (TextView) rootView.findViewById(R.id.tvFragmentOne);
        SeekBar lSeekBar = (SeekBar) rootView.findViewById(R.id.seekBar);
        lSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() 
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
                tvFragmentOne.setTextSize(progress);
            
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) 
            
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) 
            
        );
        return rootView;
    

如果你喜欢使用其他控件捏缩放、上/下按钮或其他控件组件来改变textview的文本大小,你可以通过以下过程来实现:

    更改其他小部件而不是搜索栏

    更改监听器以监听组件控件变化(如 OnSeekBarChangeListener)

    重置 textView 大小

【讨论】:

以上是关于调整片段中 TextView 的文本大小的主要内容,如果未能解决你的问题,请参考以下文章

Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小

动态添加文本后Textview不调整大小?

在自动调整 TextView 大小时输入文本时 UITableView 闪烁/口吃

根据 textView 调整单元格大小不起作用?

调整视图大小时 textview 抖动

如何调整textview的大小以不超出屏幕