调整片段中TextView的文本大小

时间:2016-08-30 03:26:14

标签: java android android-fragments textview android-seekbar

如何更改片段的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;
    }
}

这是我的活动

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


}

1 个答案:

答案 0 :(得分:1)

First, please read the following Q&A about the textsize "sp" unit in android. You should understand why it used sp as unit for textView and your question should be solved.

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/

Now, you should know the usage of "sp" unit in TextView since it can be adjusted due to the user accessibility setting. That's mean if your boss cannot see it clearly, he/she can set the font size setting in the devices instead of code change.

If you still need workaround for the programming. Here is the solution

I have added the seekbar in your fragment layout.

Update 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>

I have change your textView text as "Hello world" for testing, please change back to your own string resource.

Here is the fragment code.

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

If you like to use other control pinch to zoom, up/down button or other control component to change the text size of the textview, you can do it with the following procedures:

  1. Change other widget instead of seekbar

  2. Change the listener for listening the component control change( like OnSeekBarChangeListener )

  3. Reset the textView size