我想在RemoteView中使用带有选框效果的TextView
我有这个布局XML描述我的RemoteView(R.layout.notification_loading_small)的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="64dip"
android:background="@color/primary_background_inverted">
<ProgressBar android:indeterminate="true"
android:layout_width="64dip"
android:layout_height="64dip"
android:id="@+id/marker_progress" style="?android:attr/progressBarStyle"
android:layout_gravity="center_vertical|center_horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:orientation="vertical"
android:padding="@dimen/padding_small"
android:gravity="center_vertical">
<TextView
android:id="@+id/notification_small_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/primary_textcolor_inverted"
android:textSize="@dimen/text_size_large"
android:text="@string/loading"/>
<TextView
android:id="@+id/notification_small_textview2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/secondary_textcolor_inverted"
android:textSize="@dimen/text_size_small"
android:text="@string/loading_advice"/>
</LinearLayout>
</LinearLayout>
我的Java中的方法是这样的:
public void createTestNotification() {
mSmallLoadingNotificationView = new RemoteViews(getPackageName(), R.layout.notification_loading_small);
NotificationCompat.Builder builder = new NotificationCompat.Builder(
PlayerService.this)
.setSmallIcon(R.drawable.ic_notification).setContentTitle(APP_NAME)
.setOngoing(true).setPriority(NotificationCompat.PRIORITY_MAX)
.setContent(mSmallLoadingNotificationView);
mNotification = builder.build();
startForeground(PLAYERSERVICE_NOTIFICATION_ID, mNotification);
}
我想将 id / notification_small_textview2 中的文字水平选取,但到目前为止似乎是一项不可能完成的任务......
根据互联网我需要添加 android:ellipsize =“marquee”, android:marqueeRepeatLimit =“marquee_forever”, android:lines =“1我的TextView中的“和 android:singleLine =”true“。我们似乎还需要从Java中的TextView调用 setSelected(true)方法。但是我找不到用这种方法做到这一点的方法......我错过了什么?
我应该如何修改我的Java代码以使字幕工作?
答案 0 :(得分:3)
我认为只有当文本显示长度大于TextView
的宽度时,选框方式才有效,并且由于您将其设置为match_parent
,因此需要是一个很长的文本。
此外,您需要设置可聚焦属性。 我尝试了以下内容:
<TextView
android:text="Some string here that is wider than your screen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"/>
如果你的字符串不够长,首先要想到的是左右TextView
动画。或者可能实现使用偏移量绘制文本的自定义TextView
。
答案 1 :(得分:0)
我不确定您可以对通知做什么,但如果问题与TextView有关,您可以使用WebView代替一些HTML。