如何设置Android选项卡的样式以获得3d外观?
我想创建一个Android选项卡视图,如下图所示: 我想去罗马有很多路,但我想我还没有找到理想的路。我的想法是剪下一个分隔器和一个活动分隔器,并将它们放在按钮之间。但是,我不知道这是否是一个很好的解决方案,因为我仍然需要为第一个和最后一个按钮设置不同的样式。我已经为周围的(灰色)容器打了一个9补丁 我还考虑过为红色条制作一个红色9补丁,而不仅仅是设计所选按钮的样式。这个解决方案的问题是,我仍然需要根据按钮的数量来放置顶部的对角线白线如何设置Android选项卡的样式以获得3d外观?,android,android-layout,tabs,android-tabhost,nine-patch,Android,Android Layout,Tabs,Android Tabhost,Nine Patch,我想创建一个Android选项卡视图,如下图所示: 我想去罗马有很多路,但我想我还没有找到理想的路。我的想法是剪下一个分隔器和一个活动分隔器,并将它们放在按钮之间。但是,我不知道这是否是一个很好的解决方案,因为我仍然需要为第一个和最后一个按钮设置不同的样式。我已经为周围的(灰色)容器打了一个9补丁 我还考虑过为红色条制作一个红色9补丁,而不仅仅是设计所选按钮的样式。这个解决方案的问题是,我仍然需要根据按钮的数量来放置顶部的对角线白线 有谁能为我提供更好的解决方案吗?这里有另一种方法:将标题与选
有谁能为我提供更好的解决方案吗?这里有另一种方法:将标题与选项卡分开。是的,有点复杂,但好处是:
ImageView
让我们将标题视图创建为线性布局。我们可以使用相同的layou-weight
设置上部分隔器和可伸缩间隙
public class HeaderLayout extends LinearLayout {
public HeaderLayout(Context context) {
super(context);
initView();
}
public HeaderLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public void setNumberOfColumns(int number) {
removeAllViews();
for (int i = 0; i < number; i++) {
addView(getColumnView(), getColumnLayoutParams());
// We don't need a divider after the last item
if (i < number - 1) {
addView(getDividerView(), getDividerLayoutParams());
}
}
}
private void initView() {
setBackgroundResource(R.drawable.header_bg);
}
private View getColumnView() {
return new View(getContext());
}
private View getDividerView() {
ImageView dividerView = new ImageView(getContext());
dividerView.setImageResource(R.drawable.header_divider);
dividerView.setScaleType(ImageView.ScaleType.FIT_XY);
return dividerView;
}
private LayoutParams getColumnLayoutParams() {
return new LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f);
}
private LayoutParams getDividerLayoutParams() {
return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
}
}
公共类标题布局扩展了线性布局{
公共标题布局(上下文){
超级(上下文);
initView();
}
公共标题布局(上下文、属性集属性){
超级(上下文,attrs);
initView();
}
公共无效setNumberOfColumns(整数){
移除所有视图();
for(int i=0;i
其中R.drawable.header\u bg
是一个9补丁:
和R.drawable.header\u divider
是一个简单(可选透明)位图:
对我个人来说,为第一个和最后一个按钮制作不同的背景是最简单的解决方案,但这取决于实际任务