Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中设置TableRow的样式_Java_Android_Android Styles - Fatal编程技术网

Java 在Android中设置TableRow的样式

Java 在Android中设置TableRow的样式,java,android,android-styles,Java,Android,Android Styles,使用Android SDK,似乎没有任何方法可以在表行上设置样式。我想做的工作相当于: <TableRow style='@style/TableRow_classic' > 有人知道如何找到这个吗?据我所知,没有setStyle方法。您可以遍历并设置每个单独的属性,但这样做无法实现将视图与控制器逻辑分离的目的。糟糕 有人知道如何动态分配样式吗?我正在尝试自己设置从代码中的主题获得的样式属性 我的理由是我想使用我自己主题的样式,但我的用户界面布局完全是在代码中生成的(使用自

使用Android SDK,似乎没有任何方法可以在表行上设置样式。我想做的工作相当于:

<TableRow
    style='@style/TableRow_classic' >

有人知道如何找到这个吗?

据我所知,没有setStyle方法。您可以遍历并设置每个单独的属性,但这样做无法实现将视图与控制器逻辑分离的目的。糟糕


有人知道如何动态分配样式吗?

我正在尝试自己设置从代码中的主题获得的样式属性

我的理由是我想使用我自己主题的样式,但我的用户界面布局完全是在代码中生成的(使用自定义布局生成器),而没有在XML中定义任何小部件。因此,我无法在我的小部件的XML布局中设置样式–没有任何XML布局

我想我可以通过使用

TypedArray a = context.obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
(在我看来)这里

  • AttributeSet=null
  • 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);