Java 在Android中设置TableRow的样式
使用Android SDK,似乎没有任何方法可以在表行上设置样式。我想做的工作相当于:Java 在Android中设置TableRow的样式,java,android,android-styles,Java,Android,Android Styles,使用Android SDK,似乎没有任何方法可以在表行上设置样式。我想做的工作相当于: <TableRow style='@style/TableRow_classic' > 有人知道如何找到这个吗?据我所知,没有setStyle方法。您可以遍历并设置每个单独的属性,但这样做无法实现将视图与控制器逻辑分离的目的。糟糕 有人知道如何动态分配样式吗?我正在尝试自己设置从代码中的主题获得的样式属性 我的理由是我想使用我自己主题的样式,但我的用户界面布局完全是在代码中生成的(使用自
<TableRow
style='@style/TableRow_classic' >
有人知道如何找到这个吗?据我所知,没有setStyle方法。您可以遍历并设置每个单独的属性,但这样做无法实现将视图与控制器逻辑分离的目的。糟糕
有人知道如何动态分配样式吗?我正在尝试自己设置从代码中的主题获得的样式属性 我的理由是我想使用我自己主题的样式,但我的用户界面布局完全是在代码中生成的(使用自定义布局生成器),而没有在XML中定义任何小部件。因此,我无法在我的小部件的XML布局中设置样式–没有任何XML布局 我想我可以通过使用
TypedArray a = context.obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
(在我看来)这里
AttributeSet=null因为这是XML充气器应该提供的
int[]attrs=R.styleable.MyWidget代码>定义我要查看的属性
int defStyleAttr=myWidgetStyle
是my主题中定义的对MyWidget样式的引用。它们都是在XML文件中以res/values定义的。
“myWidgetStyle”遵循android开发者在代码中使用的名称模式defStyleRes=0代码>我希望我不需要考虑这个问题
Color color = a.getColor(R.styleable.MyWidget_background, R.color.my_default);
a.recycle();
无论如何,到目前为止,这似乎是可行的
android构建系统似乎可以方便地生成在a.getColor中使用的正确索引,并将其命名为R.styleable.MyWidget\u background
。我没有取这个名字,所以Android一定是用我的XML为我的可设置样式的MyWidget命名的
我希望通过在TypedArray中搜索所需的属性可以查找正确的索引,但这样做效率很低,而且TypedArray看起来像是一个令人不快的处理工具。我会用一根很长的棍子戳它
Don我发现实现这一点的最佳解决方案是创建一个“部分”布局,表示表行,并定义样式:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/tr_withborder" />
虽然不理想,但它确实对我有用
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/tr_withborder" />
TableRow tr = (TableRow) getLayoutInflater().inflate(R.layout.partial_table_row, null);