调整片段中 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的大小