使用我的滑动标签项目,如何以编程方式设置标签的宽度,以便它们使用滑动标签条的整个空间,并且每个标签的宽度大小相等?我已尝试使用下面的代码,但标签不会按要求拉伸。
SlidingTabLayout.java
protected TextView createDefaultTabView(Context context) {
TextView textView = new TextView(context);
textView.setGravity(Gravity.CENTER);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, TAB_VIEW_TEXT_SIZE_SP);
textView.setTypeface(Typeface.DEFAULT_BOLD);
textView.setTextColor(context.getResources().getColor(R.color.black));
textView.setWidth(0);
int padding = (int) (TAB_VIEW_PADDING_DIPS * getResources().getDisplayMetrics().density);
textView.setPadding(padding, padding, padding, padding);
return textView;
}
文字重量错误
答案 0 :(得分:3)
在您的方法中添加此内容
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
textView.setWidth(size.x / count); // Where count is number of textviews
此外,如果您支持旧版本
使用此
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2)
{
display.getSize(size);
}
else
{
size.set(display.getWidth(), display.getHeight());
}
答案 1 :(得分:1)
答案 2 :(得分:1)
我有一个不同的问题,我必须自定义每个标签的宽度:
我正在使用setDistributeEvenly函数。相反,我需要设置每个textviews的权重。
在 SlidingTabLayout.java 上添加此变量:
private int[] mTabWeights;
此方法应设置标签权重:
public void setTabWeights(int[] weights){
mTabWeights = weights;
}
查找方法 populateTabStrip()并添加 else语句:
if (mDistributeEvenly) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView.getLayoutParams();
lp.width = 0;
lp.weight = 1;
}else{
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView.getLayoutParams();
lp.width = 0;
lp.weight = mTabWeights[i];
}
您可以重构代码以使其更清晰。这是在使用时:
stNews = (SlidingTabLayout) findViewById(R.id.stNews);
stNews.setDistributeEvenly(false);
stNews.setTabWeights(new int[]{2,3,3});
这是最终结果:
希望它有所帮助!