java - 调整 Fragment 中 TextView 的文本大小

标签 java android android-fragments textview android-seekbar

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

我的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 中的用法,因为它可以根据用户可访问性设置进行调整。这意味着如果你的老板看不清楚,他/她可以在设备中设置字体大小设置而不是代码更改。

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

我已经在您的 fragment 布局中添加了搜索栏。

更新 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”,请改回你自己的字符串资源。

这是 fragment 代码。

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 的文本大小,你可以通过以下过程来实现:

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

  2. 更改监听组件控件变化的监听器(如OnSeekBarChangeListener)

  3. 重置 textView 大小

关于java - 调整 Fragment 中 TextView 的文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218327/

相关文章:

java - Java控制台打印 "Marker : e1 1234"是什么意思?

java - Android 无法删除文件

Android:如何通过移动网络强制进行 Facebook 身份验证

android - 如何在通知上打开特定的 viewpager 选项卡单击 android

java - Android Studio 上带有 fragment 的抽屉导航

java - 如何检查sqlite中是否存在记录,如果存在,则更新它。

java - Jfreechart XYPlot,如何将图例绘制到绘图区?

java - 安卓图像按钮

android - 客户端拒绝AUDIO_OUTPUT_FLAG_FAST

java - onActivityResult 和 "Error Can not perform this action after onSaveInstanceState"中的操作