自定义形状开关看起来像这样:
以上API 21
API 21以下
看起来像<size/>块不适<shape/>用于21之前的API.
任何想法如何解决这个问题?
码
container.xml中:
<Switch
android:id="@id/switch_follow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:textOff=""
android:textOn=""
android:thumb="@drawable/switch_selector"
android:track="@drawable/switch_track"/>
Run Code Online (Sandbox Code Playgroud)
绘制/ switch_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item
android:bottom="@dimen/switch_selector_padding"
android:left="@dimen/switch_selector_padding"
android:right="@dimen/switch_selector_padding"
android:top="@dimen/switch_selector_padding">
<shape
android:dither="true"
android:shape="oval"
android:useLevel="false"
android:visible="true">
<gradient
android:angle="270"
android:endColor="@color/primary_white"
android:startColor="@color/primary_white"/>
<corners
android:radius="@dimen/switch_radius"/>
<size
android:width="@dimen/switch_track_height"
android:height="@dimen/switch_track_height" />
</shape>
</item>
</layer-list>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
绘制/ switch_track.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:dither="true"
android:shape="rectangle"
android:useLevel="false"
android:visible="true">
<gradient
android:angle="270"
android:endColor="@color/primary_yellow_dark_v2"
android:startColor="@color/primary_yellow_dark_v2"/>
<corners android:radius="@dimen/switch_radius" />
<stroke
android:width="@dimen/switch_stroke_height"
android:color="@android:color/transparent">
</stroke> …Run Code Online (Sandbox Code Playgroud) 我试图MediaController在方向变化上动态改变锚点.经过我的所有尝试后,这根本不能正常工作.
也许你可以指出我的错误.
简而言之:
肖像模式:
SurfaceView 重量:0.4MediaController和HorizontalScrollView重量:0.6MediaController 总是可见而不是隐藏景观模式:
SurfaceView 重量:0.0(全屏)
MediaControlls= View.Gone(我需要将其锚更改为SurfaceView.并弹出onTouch.但是如何?)
代码:
player.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
tools:context="tenkol.design.com.imbrecords.ActivityExoPlayer"
android:weightSum="1"
android:orientation="vertical">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/surface_wrapper"
android:layout_weight="0.4">
<com.google.android.exoplayer.VideoSurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
<View
android:id="@+id/shutter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" />
</FrameLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.6"
android:orientation="vertical">
<FrameLayout
android:id="@+id/controls_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp">
</FrameLayout>
<HorizontalScrollView
android:id="@+id/myGallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp">
<LinearLayout
android:id="@+id/channelsScrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp" …Run Code Online (Sandbox Code Playgroud) android android-video-player android-layout android-mediaplayer
是否可以LimitLine用自定义布局替换?所以它看起来像这样:
我看到几个解决方案:
TextView值的存储位置坐标,并在该位置添加自定义布局.但是我怎么能达到这个目的TextView呢?也许有人遇到了这个问题.请分享您的经验.
编辑:最新的部分解决方案
经过长时间的搜索解决方案,我开始通过Limit Line的坐标以编程方式添加自定义视图.
屏幕总体布局如下:
坐标计算非常简单.X从图表坐标和已知Y:
Y =((max - lastValue)*height)/((max + min)+ y)
所以在这一点上我基本上知道我需要的位置.虽然由于父母的缘故,我不确定这是对的ScrollView.
下一步是在这些坐标处添加自定义布局 (x, y)
这就是新问题.我试图将视图添加到顶部RelativeLayout.它被添加但它不会一起移动ScrollView.因此,需要在Chart上添加该视图.看看我是如何尝试实现这一目标的:
private void addCustomLayoutOnLimitLine(final double lastValue) {
mChart.post(new Runnable() { //check location when view is created
public void run() {
int[] chartLocationOnScreen = new int[2];
mChart.getLocationOnScreen(chartLocationOnScreen);
int x = chartLocationOnScreen[0];
int y = chartLocationOnScreen[1];
int width = mChart.getWidth();
int height = …Run Code Online (Sandbox Code Playgroud) 我以下(1,2)指导创建的Chromecast发送者的Android应用程序,我只在发送图片感兴趣.有很多信息和示例如何投射文本,音频和视频.但是没有一个单词如何与图片.
我相信stackoferflow的力量,有人应该遇到这样的问题.请提供一些好的样本或教程.我需要的是使用Media Router及其功能投射全屏图片的指南.
多数民众赞成我如何使用自定义渠道发送短信:
/**
* Send a text message to the receiver
*/
private void sendMessage(String message) {
if (mApiClient != null && mSmartBusChannel != null) {
try {
Cast.CastApi.sendMessage(mApiClient,
mSmartBusChannel.getNamespace(), message)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status result) {
if (!result.isSuccess()) {
Log.e(TAG, "Sending message failed");
}
}
});
} catch (Exception e) {
Log.e(TAG, "Exception while sending message", …Run Code Online (Sandbox Code Playgroud) 一些特殊的情况迫使我做那种变态的事情.
是否可以在不同的频道上播放2个不同的音频流.想象一下耳机,我需要同时播放左扬声器的第一首歌和右扬声器的第二首歌.
经过一些研究,我发现可以在某个单一频道播放.甚至可以关闭其中一个.但我没有找到任何有关如何同时播放2个音频流的信息.
它甚至可能吗?如何?一些代码示例和链接赞赏!
研究结果.
1)AudioTrack能够在不同的频道上播放
// only play sound on left
for(int i = 0; i < count; i += 2){
short sample = (short)(Math.sin(2 * Math.PI * i / (44100.0 / freqHz)) * 0x7FFF);
samples[i + 0] = sample;
samples[i + 1] = 0;
}
// only play sound on right
for(int i = 0; i < count; i += 2){
short sample = (short)(Math.sin(2 * Math.PI * i / (44100.0 / freqHz)) * 0x7FFF);
samples[i …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过Retrofit 2使用SimpleXML来使用XML.经过几个小时与Kotlin的挣扎,我决定尝试Java版本,然后转换到Kotlin.Java版本运行良好......
错误:
java.lang.RuntimeException: org.simpleframework.xml.core.MethodException: Annotation @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=true, name=entry, required=true, type=void) must mark a set or get method
Run Code Online (Sandbox Code Playgroud)
我需要一个能够使用该XML的Kotlin模型类.这是输入:
<feed>
<entry>
<id> someid </id>
<published> somedate </published>
</entry>
<entry>
<id> someid2 </id>
<published> somedate2 </published>
</entry>
</feed>
Run Code Online (Sandbox Code Playgroud)
Java模型类版本(工作正常):
@Root(name = "feed", strict = false)
public class MFeed {
@ElementList(name = "entry", inline = true)
private List<MEntry> entriesList;
public MFeed(List<MEntry> entriesList) {
this.entriesList = entriesList;
}
public MFeed() {
}
public List<MEntry> getEntriesList() {
return entriesList;
}
public void …Run Code Online (Sandbox Code Playgroud) 当项目在屏幕边缘(左侧或右侧)附近拖动时,我需要实现当前标签更改.
拖拽N下降功能和当前选项卡切换没有问题.我只是无法正确处理此事件 - 当拖动项目靠近屏幕边缘时.
你会怎么做?
我尝试了什么:
<FrameLayout
android:id="@+id/left_toggle_area"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true">
</FrameLayout>
<FrameLayout
android:id="@+id/right_toggle_area"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true">
</FrameLayout>
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
... />
Run Code Online (Sandbox Code Playgroud)
我们的想法是在切换区域拖动项目时以编程方式更改当前选项卡.
但是该DragEvent.ACTION_DRAG_ENTERED区域的事件从未发生过(我相信如此)GridView整个屏幕占用并且只是与切换区域重叠.
我已经尝试在触发拖动启动事件时将这些区域带到前面.但由于某种原因,这不起作用.
FrameLayout toggleView = (FrameLayout) v;
toggleView.bringToFront();
toggleView.requestLayout();
toggleView.invalidate();
Run Code Online (Sandbox Code Playgroud)
如果有人遇到这样的问题,请分享您的经验.或许还有另一个更好的解决方案.请给我一个提示.
我使用的是ViewPager同PagerTabStrip在fragment A,一切工作正常.项目已填充.......直到我代替A用B,然后再替换B用A.
片段xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTabStrip
android:id="@+id/pager_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#222222"
android:textColor="@color/blue" />
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)
Debuggin显示在getItem(int position)从未达到第二次替换后FragmentPagerAdapter.标签是空的.
标签适配器:
private class ChannelsFragmentPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = dataChannelsList.size();
public ChannelsFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
return dataChannelsList.get(position).getLang();
} …Run Code Online (Sandbox Code Playgroud) android android-adapter android-fragments android-viewpager android-tabs
问题如下.让我们有3个带片段的标签:
如您所见,选项卡3和选项卡2包含相同的片段但不同的实例.
如何将数据(不是通过参数)发送到Tab 2?
我尝试过的:
Local Broadcast Receiver对片段B的两个实例注册相同onReceive()检查接收的ID是否等于片段的ID但不幸的是,广播仅被发送到Tab 3.
编辑:更多信息.
这些选项卡托管在另一个片段中ViewPager.这是因为它们的组合NavigationDrawer与ViewPager提到的Tabs和Tabs有关.
tabs android broadcastreceiver android-fragments android-broadcast
如何在导航抽屉中下划线菜单项?
期望:
现实:
@菜单/ activity_navigation_drawer:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_open_account"
android:title="@string/na_navigate_open_account" />
<item
android:id="@+id/nav_login"
android:title="@string/na_navigate_login" />
<item
android:id="@+id/nav_stock_signals"
android:title="@string/na_navigate_stock_signals" />
...
</group>
Run Code Online (Sandbox Code Playgroud)
导航抽屉活动布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="end">
<include
layout="@layout/app_bar_navigation"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:fitsSystemWindows="true"
android:background="@color/primary_asphalt_dark"
app:headerLayout="@layout/nav_header_navigation"
app:menu="@menu/activity_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
告诉我是否需要更多代码.
android ×10
xml ×3
android-tabs ×1
audio ×1
casting ×1
chromecast ×1
google-cast ×1
java ×1
kotlin ×1
menuitem ×1
retrofit2 ×1
tabs ×1