【问题标题】:Align TextViews in specific way以特定方式对齐 TextView
【发布时间】:2021-10-27 18:58:47
【问题描述】:

我目前正在学习 Android 中的一些技术,我想通过按钮按下(通过 Java)将 TextViews 添加到应用程序(View)中。但在通过代码添加它们之前,我想为每个TextView 附加一个来自“res/values/styles.xml” 的自制预配置样式。这是迄今为止的主要思想。

基本上我想知道如何在 Activity 的 XML 文件中配置我的 TextViews(在 styles.xml 中)和给定的 Layout(例如 main_activity.xml),以便它们看起来像这张图片:

所以我们的目标是预先配置好布局和文本视图,我只需要一个接一个地添加文本视图,这样它们就可以按照图片中的方式对齐。

为了实现这一目标,我必须做些什么?

// main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView style="@style/AddedTextView" />

    </RelativeLayout>
    
    ...

    <Button
        android:id="@+id/btn_add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />
</LinearLayout>

// res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AddedTextView" parent="Widget.AppCompat.TextView">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:background">@drawable/custom_textview_design</item>
        <item name="android:text">TestTV</item>
        <item name="android:textColor">@color/common_text_color</item>
        <item name="android:textSize">7pt</item>
        <item name="android:layout_alignParentLeft">true</item>
    </style>
</resources>

【问题讨论】:

    标签: android android-layout user-interface layout textview


    【解决方案1】:

    您可以使用ContextThemeWrapper 以编程方式应用样式:

    val textView = TextView(ContextThemeWrapper(this, R.style.AddedTextView))
    

    要添加相互连接的TextViews 并将它们垂直包装,您可以使用Google 的FlexBoxLayout

    这是基本布局:

    <com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/flexLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:flexDirection="row"
        app:flexWrap="wrap">
    
    </com.google.android.flexbox.FlexboxLayout>
    

    以编程方式添加视图非常简单:

    val flexboxLayout = findViewById<View>(R.id.flexLayout) as FlexboxLayout
    
    for (i in 1..50) {
        val textView = TextView(ContextThemeWrapper(this, R.style.AddedTextView))
        val layoutParams = FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
        layoutParams.rightMargin = 40
        textView.layoutParams = layoutParams
        textView.text = "TextView $i"
        flexboxLayout.addView(textView)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2019-01-05
      • 2011-04-19
      • 1970-01-01
      • 2016-12-06
      • 2017-03-02
      相关资源
      最近更新 更多