自定义控件--自定义内容可以滚动的TextView
2015-11-10 12:59
357 查看
一:创建一个类继承TextView类
public class RollTextView extends TextView { public RollTextView(Context context) { super(context); } public RollTextView(Context context, AttributeSet attrs) { super(context, attrs); } public RollTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public RollTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } /** * 实现TextView内容的滚动其实就是使其默认是'有焦点'的,这里的有焦点并不是真的有焦点, * 仅仅是使其isFocused()默认返回true。 * 不管有没有获取到焦点,将该方法直接返回true,欺骗Android我获取到了焦点,不一定。 * @return:true为获取到焦点 */ @Override public boolean isFocused() { // return super.isFocused(); return true; } }
二:在布局文件中使用自定义的可以滚动的TextView
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 对于ellipsize的几个属性: start:前面的用...省略; end:后面的用...省略; middle:中间的用...省略 none:默认情况,相当于没用使用ellipsize属性 marquee:不省略任何内容,类似一个大帐篷,遮罩住整个内容 focusableInTouchMode:允许控件获取焦点,但是前提也是focusable属性为true; 当给focusableInTouchMode属性设为true时,第一次点击控件是使其获取焦点,以后 的点击才会执行控件的onClick事件。 --> <EditText android:id="@+id/et_tests" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/et_hint_test1" /> <Button android:id="@+id/bt_rollTextView_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:singleLine="true" android:onClick="onClick" android:focusableInTouchMode="true" android:text="@string/text_rolltextview_button"/> <EditText android:id="@+id/et_test" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <!--自定义的可以滚动的TextView--> <com.mycompany.mysimple.RollTextView android:id="@+id/tv_rollTextView_show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:text="@string/tv_rollTextView_text"/> </LinearLayout>
三:
public class RollTextViewActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rolltextview); } public void onClick(View view){ Toast.makeText(this,"按钮被点击了",Toast.LENGTH_SHORT).show(); System.out.println("按钮被点击了"); } }
相关文章推荐
- 面向对象设计原则之接口隔离原则
- LightOJ 1031 - Easy Game(概率)
- 把钱投资自己头脑上(三)
- 用MVP架构开发Android应用
- 黑马程序员_自定义异常
- LightOJ 1030 - Discovering Gold(dp)
- ZigBee相关资源
- 老程序员应该记住的 5 件事
- 面向对象设计原则之开闭原则
- 黑马程序员_继承
- PHP编码规范
- 深圳地铁规划图2
- 大数据大家学
- 干掉Unity3D
- 【HDU】2966 In case of failure【KD树】
- [leetcode-303]Range Sum Query - Immutable
- 操作系统与网络实现 之九
- 黑马程序员——C语言基础01—C语言概述
- 一些小方法的集合
- c 语言中的!和~