在Android中水平对齐5个文本视图

时间:2017-04-05 08:17:24

标签: android textview radio-button android-linearlayout

我需要你的帮助来解决这个问题: 我有一个水平方向的线性布局。在这个布局中,我有5个带有可见性的文本视图:已消失。在这个布局之上,我有一个水平对齐的5个单选按钮的无线电组。

当我选中一个单选按钮时,相应的文本视图会改变其可见性。我想在每个单选按钮下面显示一个文本视图。实际上他们处于相同的位置。

<LinearLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 >

   <TextView />
   <TextView />
   <TextView />
   <TextView />
   <TextView />
 </LinearLayout>

我该怎么做?

3 个答案:

答案 0 :(得分:0)

使用visibility:Invisible代替gone,因为使用gone时,他们不使用任何屏幕,因此当选定的屏幕出现时其余部分并不存在,并且它将显示在第一个位置。

希望这有帮助。

答案 1 :(得分:0)

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);        
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // checkedId is the RadioButton selected
       // set visibility in visible according to Id by using if condition Or  switch
    }
});

答案 2 :(得分:0)

将LinearLayout weigthSum设置为1.0。使每个textview权重为0.2&amp;对隐形的可见性。 查看已消失的可见性不占用任何空间

我看到了第二个textview。但是带有文本“1”的textview将在textview之前占用空格,文本为“2”。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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"
    tools:context="net.techdesire.HomeActivity"
    tools:showIn="@layout/app_bar_home">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/radio_layout">

        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:id="@+id/value_group">

        <RadioButton
            android:text="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton1"
            android:layout_weight="0.2"/>
        <RadioButton
            android:text="2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton2"
            android:layout_weight="0.2"/>
        <RadioButton
            android:text="3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton3"
            android:layout_weight="0.2"/>
        <RadioButton
            android:text="4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton4"
            android:layout_weight="0.2"/>
        <RadioButton
            android:text="5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton5"
            android:layout_weight="0.2"/>
        </RadioGroup>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/fragment_container"
        android:orientation="horizontal"
        android:layout_below="@+id/radio_layout"
        android:weightSum="1.0">

        <TextView
            android:id="@+id/text1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:visibility="invisible"
            android:text="1"/>
        <TextView
            android:id="@+id/text2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:visibility="visible"
            android:text="22345678dsada"
            android:maxLines="1"
            android:ellipsize="marquee"/>
        <TextView
            android:id="@+id/text3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:visibility="invisible"
            android:text="3"/>
        <TextView
            android:id="@+id/text4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:visibility="invisible"
            android:text="4"/>
        <TextView
            android:id="@+id/text5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.2"
            android:visibility="invisible"
            android:text="5"/>
    </LinearLayout>
</RelativeLayout>

在Radio组中设置onCheckChangeListener然后比较已检查单选按钮的id并根据它隐藏/显示textview。参见

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);        
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            /*hide all*/
            TextView tv;
            if(checkedID==R.id.radioButton1)
                tv=(RadioButton)findViewById(R.id.text1);
            elseif(checkedID==R.id.radioButton2)
                tv=(RadioButton)findViewById(R.id.text2);
            /* Similarly other else conditions*/
            tv.setVisibility(View.VISIBLE);
        }
    });