调整 Fragment 中 TextView 的文本大小

Resize text size of a TextView in a Fragment

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

我的fragment_one.xml

<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="org.aultoon.webovietab.fragments.OneFragment"
android:id="@+id/oneFragmentId"
>



<ScrollView
    android:id="@+id/scrollView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fadingEdge="none"
    android:fillViewport="true"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="top|center"
        android:gravity="center"
        >


<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    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;
    }
}

这是我的 activity

 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);
        }
    }


}

首先,请阅读以下关于android中文本大小"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/

现在,您应该知道 "sp" 单元在 TextView 中的用法,因为它可以根据用户辅助功能设置进行调整。这意味着如果你的老板看不清楚,he/she 可以在设备中设置字体大小设置而不是代码更改。

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

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

更新xml.

<RelativeLayout android:id="@+id/oneFragmentId"
                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"
    >

    <SeekBar
        android:id="@+id/seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"/>

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/seekBar"
        android:fadingEdge="none"
        android:fillViewport="true"
        >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center"
            android:gravity="center"
            android:orientation="vertical"
            >


            <TextView
                android:id="@+id/tvFragmentOne"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                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;
    }
}

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

  1. 更换其他小部件而不是搜索栏

  2. 更改侦听组件控件更改的侦听器(如 OnSeekBarChangeListener )

  3. 重置 textView 大小