代码之家  ›  专栏  ›  技术社区  ›  El_Loco

在recycleview中将某个字符居中

  •  0
  • El_Loco  · 技术社区  · 6 年前

    我在一个应用程序中工作,我有一个循环视图来显示用户输入的单词。

    我想让它看起来像

           word1 - word2
    longer word1 - word3
    

    但我知道

        word1 - word2
    longer word1 - word3.
    

    我曾尝试放置三个文本视图并在回收视图中使用它们,但迄今为止没有成功。也许可以计算单词对中的字符数,并在末尾添加空格,以便两个单词都一样大。但这似乎是一个糟糕的解决方案。

    有什么想法吗?

    我两者都试过了 LinearLayout RelativeLayout ,当我使用 线性布局 结果如上所述。当我使用 相对布局 只显示最后两个单词。一开始什么都看不到 TextView .

    以下是xml文件和java代码

    文本视图:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:textSize="@dimen/active_text_size"
            android:layout_toStartOf="@id/adapter_textview2"
            android:id="@+id/adapter_textview1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:textSize="@dimen/active_text_size"
            android:id="@+id/adapter_textview2"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_toEndOf="@id/adapter_textview2"
            android:textSize="@dimen/active_text_size"
            android:id="@+id/adapter_textview3"/>
    </RelativeLayout>
    

    活动布局:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/activity_root"
        tools:context="com.example.erikbylow.autoflash.TranslateActivity">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
    
            <LinearLayout
                android:layout_alignParentBottom="true"
                android:layout_width="match_parent"
                android:id="@+id/linear_input"
                android:layout_height="50dp"
                android:background="@android:color/white"
                android:orientation="horizontal">
                <EditText
                    android:layout_width="0dp"
                    android:layout_weight="0.75"
                    android:layout_height="match_parent"
                    android:gravity="center_vertical"
                    android:singleLine="true"
                    android:id="@+id/source_input"
                    android:hint="Type text to translate"/>
    
                <Button
                    android:layout_height="match_parent"
                    android:layout_width="0dp"
                    android:layout_weight="0.25"
                    android:layout_alignRight="@+id/source_input"
                    android:text="Translate"
                    android:clickable="true"
                    android:onClick="startTranslate"
                    android:background="@android:color/holo_green_dark"/>
            </LinearLayout>
            <android.support.v7.widget.RecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/translate_recycle"
                android:scrollbars="vertical"
                android:background="@android:color/holo_blue_bright" />
        </LinearLayout>
    </android.support.constraint.ConstraintLayout>
    

    从…起 CustomAdapter

    @Override
        public void onBindViewHolder(ViewHolder viewHolder, final int position){
            Log.d(TAG, "Element " + position + " set." + mDataSet.get(position).w1);
            viewHolder.getLeftTextView().setText(mDataSet.get(position).w1);
            viewHolder.getCenterTextView().setText(" - ");
            viewHolder.getRightTextView().setText( mDataSet.get(position).w2);
    
        }
    

    编辑: 谢谢你的帮助,我是如何通过使用 ADM:s 提案并添加 textAlignment .

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">
    
    
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:textAlignment="textEnd"
            android:textSize="@dimen/active_text_size"
            android:id="@+id/adapter_textview1"/>
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:textAlignment="center"
            android:textSize="@dimen/active_text_size"
            android:id="@+id/adapter_textview2"/>
        <TextView
            android:textAlignment="textStart"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:textSize="@dimen/active_text_size"
            android:id="@+id/adapter_textview3"/>
    </LinearLayout>
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   ADM    6 年前

    排列 TextView's 从右侧开始。

     <RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/adapter_textview2"
            android:id="@+id/adapter_textview1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_toLeftOf="@+id/adapter_textview3"
            android:id="@+id/adapter_textview2"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:id="@+id/adapter_textview3"/>
    </RelativeLayout>
    

    添加 margins padding 根据需要。

    如果 Text 任何长度都不可预测 LinearLayout 具有 layout_weight .

     <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center">
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:id="@+id/adapter_textview1"/>
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:id="@+id/adapter_textview2"/>
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:id="@+id/adapter_textview3"/>
    </LinearLayout>
    
        2
  •  0
  •   Dimitar Dihanov    6 年前

    好吧,我不知道为什么当示例显示一行中只有2个文本视图时,您有3个文本视图。

    我想到了这一点-将布局更改为具有水平方向的线性布局,并添加一些权重,以便第二个文本视图保持不变。

    试试看,告诉我是否有效:

    <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/adapter_textview1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:padding="8dp"
                android:text="reallly loooong looooong text"
                android:textSize="@dimen/active_text_size" />
    
            <TextView
                android:id="@+id/adapter_textview2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignEnd="@+id/adapter_textview1"
                android:layout_alignParentTop="true"
                android:layout_gravity="center"
                android:layout_weight="22"
                android:padding="8dp"
                android:text="long text"
                android:textSize="@dimen/active_text_size" />
        </LinearLayout>