【问题标题】:ScrollView issue AndroidScrollView 问题 Android
【发布时间】:2013-07-04 20:38:49
【问题描述】:
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scrollbars="none">
<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:singleLine="true"
    android:text=""
    android:layout_gravity="right"
    android:gravity="right|center_vertical"
    android:textColor="#666666"
    android:textSize="30sp" />
</HorizontalScrollView>

嗨,我希望 textView 中的文本在填满所有可用空间时可以滚动。文本从右侧插入,因此文本的开头在左侧消失。当它变得可滚动时,我可以滚动与未显示的文本空间相等的空间量,但它只滚动到右侧,其中 textView 为空,我无法访问我之前输入的内容。建议? 抱歉英语不好。希望它足够清楚......(滚动视图是垂直线性布局的一部分)

【问题讨论】:

    标签: android layout textview scrollview gravity


    【解决方案1】:

    将 android:layout_gravity="right" 从 TextView 移动到 Horizo​​ntalScrollView
    将 TextView 重力更改为仅“center_vertical”
    在 Activity.java 中编写一个方法来设置 TextView 中的文本并向右滚动。
    当您想在 TextView 中设置文本时,请使用此方法。

    示例代码:

    XML

    <HorizontalScrollView
        android:id="@+id/scrollView"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scrollbars="none"
        android:layout_gravity="right">
    
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:singleLine="true"
        android:text=""
        android:gravity="center_vertical"
        android:textColor="#666666"
        android:textSize="30sp"/>
    
    </HorizontalScrollView>
    
    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="ClickMe" 
        android:onClick="btClick"/>
    
    </LinearLayout>
    

    Activity.java:

        public class MainActivity extends Activity {
    
        private TextView textView;
        private HorizontalScrollView scroll;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            scroll = (HorizontalScrollView)findViewById(R.id.scrollView);
            textView = (TextView) findViewById(R.id.textView2);
    
            SetTextViewText("Inicial Text");
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        public void btClick(View v) {
    
            String text = textView.getText().toString();
            int rnd = 1 + (int)(Math.random() * ((9 - 1) + 1));//Get a random number between 1 and 9 
            text += rnd; //Append random to previous text
            SetTextViewText(text); //Set TextView with new text;
        }
    
        private void SetTextViewText(String text)// Set text to TexView and scroll all to the right
        {
            textView.setText(text);
            scroll.post(new Runnable() {
                public void run() {
                    scroll.fullScroll(ScrollView.FOCUS_RIGHT);
                }
            });     
        }
    }
    

    我希望这是你的要求。

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      相关资源
      最近更新 更多