【问题标题】:Set style on TableRow in Android在 Android 中的 TableRow 上设置样式
【发布时间】:2010-11-11 19:19:08
【问题描述】:

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

<TableRow
    style='@style/TableRow_classic' >

在代码中。我想要类似的东西:

TableRow row = new TableRow(this);
row.setStyle(R.style.TableRow_classic);

有人知道怎么找到吗?

【问题讨论】:

    标签: java android android-styles


    【解决方案1】:

    我发现完成此任务的最佳解决方案是创建一个表示表格行的“部分”布局,并定义样式:

    <?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);
    

    虽然不理想,但它确实对我有用

    【讨论】:

      【解决方案2】:

      据我所知,没有 setStyle 方法。您可以遍历并设置每个单独的属性,但这违背了将视图与控制器逻辑分离的目的。不好。

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

      【讨论】:

        【解决方案3】:

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

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

        我想我可以通过使用在我的小部件的代码中设置这种样式

        TypedArray a = context.obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
        

        这里(在我看来)似乎

        1. AttributeSet set = null; 因为这是 XML inflater 所提供的。

        2. int[] attrs = R.styleable.MyWidget; 定义了我要查看的属性。

        3. int defStyleAttr = myWidgetStyle; 这是在我的主题中定义的对 MyWidget 样式的引用。这些都是在 res/values 中的 XML 文件中定义的。 “myWidgetStyle”遵循 android 开发人员在其代码中使用的名称模式。

        4. defStyleRes = 0;我希望我不需要考虑这个。

        然后获取任意属性,比如背景颜色,

        Color  color = a.getColor(R.styleable.MyWidget_background,  R.color.my_default);
        
        a.recycle();
        

        这似乎确实有效——无论如何。

        android 构建系统似乎很方便地生成了正确的索引以在 a.getColor 中使用,并将其命名为 R.styleable.MyWidget_background 。这个名字不是我起的,所以 Android 一定是使用我的 XML 为我的可样式化 MyWidget 做的。

        我希望人们可以通过在 TypedArray 中搜索所需的属性来查找正确的索引,但这将是低效的,并且 TypedArray 看起来像是一种令人不快的装置来处理。我会用一根很长的棍子戳它!

        不要

        【讨论】:

          猜你喜欢
          • 2018-11-27
          • 1970-01-01
          • 1970-01-01
          • 2022-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多